1、主要利用FileChannel类的方法
import java.io.*;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.lang.Exception;
class NioDemo
{
public static void main(String[] args) throws Exception
{
if(args.length<2)
System.out.println("请输入文件路径");
NioUtils copyUtil = new NioUtils();
copyUtil.copyFiles(args[0],args[1]);
}
}
class NioUtils
{
public void copyFiles(String srcPath,String tarPath) throws Exception
{
File srcFile = new File(srcPath);
File tarFile = new File(tarPath);
if(srcFile.isDirectory())
{
System.out.println("正在创建文件夹:" + srcFile.getName());
tarFile = new File(tarFile,srcFile.getName());
tarFile.mkdir();
}
File[] files = srcFile.listFiles();
for(File temFile : files)
{
if(temFile.isDirectory())
copyFiles(temFile.getAbsolutePath(),tarFile.getAbsolutePath());
else
{
String name = temFile.getName();
System.out.println("正在复制文件:" + name);
copyFile(temFile,new File(tarFile,name));
}
}
}
private void copyFile(File temFile,File tarFile)
{
try
{
FileInputStream fis = new FileInputStream(temFile);
FileOutputStream fos = new FileOutputStream(tarFile);
FileChannel fin = fis.getChannel();
FileChannel fout = fos.getChannel();
ByteBuffer bytebuf = ByteBuffer.allocate(1024);
while(true)
{
bytebuf.clear();
if(fin.read(bytebuf) == -1)
break;
bytebuf.flip();
fout.write(bytebuf);
}
fis.close();
fos.close();
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
}
}
}