File类的应用--拷贝

来源:互联网 发布:linux vi进入编辑模式 编辑:程序博客网 时间:2024/06/12 01:30

File类的应用--拷贝

拷贝一个目录,包括里面的文件,要用到递归.也就是函数本身调用自身.

递归要注意:

1,限定条件,结束递归

2,要注意递归的次数,尽量避免内存溢出


思路:1,在拷贝的位置先创建目

         2,遍历时不是文件,是文件则直接拷贝过去

不是文件则递归,创建目录,再对目录中的文件在进行判断


public class CopyDir {


/**
* @param args
*/
public static void main(String[] args) throws Exception {
File src = new File("F:/java/day21.1");
File dest = new File("F:");
copyDir(src, dest);
}


public static void copyDir(File src, File dest) throws Exception {
// 获取要创建的文件夹的路径
File newDir = new File(dest, src.getName());
// 在指定路径下创建新的文件夹
newDir.mkdir();
// 获取源文件中该文件夹中的文件
File[] arr = src.listFiles();
// 遍历
for (File file : arr) {
// 判断是否是文件,若是文件则直接拷贝
if (file.isFile())
// 拷贝到新创建的目录下
copyFile(file, new File(newDir, file.getName()));
if (file.isDirectory())
//是文件夹则递归
copyDir(file, newDir);
}
}

//拷贝文件
private static void copyFile(File src, File dest) throws IOException {
try (InputStream is = new FileInputStream(src);
OutputStream os = new FileOutputStream(dest);) {
byte[] buff = new byte[1024];
int len;
while ((len = is.read(buff)) != -1) {
os.write(buff, 0, len);
}
}
}


}


原创粉丝点击