您的位置:首页 > 运维架构

CopyFile and Directory By channel

2013-08-28 17:32 405 查看
public class CopyFilebyChannel {

public static void main(String[] args) throws IOException {

/*

* @return 实际复制的字节数,如果文件、目录不存在、文件为null或者发生IO异常,返回-1

*/

copyDirectiory("/home/vergil/Desktop/111", "/home/vergil/Desktop/222");

}

public static long copyFile2(File srcFile, File destDir, String newFileName) {

long copySizes = 0;

if (!srcFile.exists()) {

System.out.println("源文件不存在");

copySizes = -1;

} else if (!destDir.exists()) {

System.out.println("目标目录不存在");

copySizes = -1;

} else if (newFileName == null) {

System.out.println("文件名为null");

copySizes = -1;

} else {

try {

FileChannel fcin = new FileInputStream(srcFile).getChannel();

FileChannel fcout = new FileOutputStream(new File(destDir,

newFileName)).getChannel();

long size = fcin.size();

fcin.transferTo(0, fcin.size(), fcout);

fcin.close();

fcout.close();

copySizes = size;

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

return copySizes;

}

// 复制文件夹

public static void copyDirectiory(String sourceDir, String targetDir)

throws IOException {

// 新建目标目录

(new File(targetDir)).mkdirs();

// 获取源文件夹当前下的文件或目录

File[] file = (new File(sourceDir)).listFiles();

for (int i = 0; i < file.length; i++) {

if (file[i].isFile()) {

// 源文件

File sourceFile=file[i];

// 目标文件

File targetFile=new

File(new File(targetDir).getAbsolutePath()

+File.separator+file[i].getName());

// copyFile2(new File(sourceFile), new File(targetFile), sourceFile);

copyFile2(sourceFile, new File(targetDir), sourceFile.getName());

}

if (file[i].isDirectory()) {

// 准备复制的源文件夹

String dir1=sourceDir + "/" + file[i].getName();

// 准备复制的目标文件夹

String dir2=targetDir + "/"+ file[i].getName();

copyDirectiory(dir1, dir2);

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: