Java io流---拷贝文件夹下的所有文件和目录
本文最后更新于:2021年9月28日 下午
Java io流—拷贝文件夹下的所有文件和目录
代码:
package demo01;
import java.io.*;
import java.util.TreeMap;
public class CopyAll {
public static void main(String[] args) {
//拷贝源
File srcFile = new File("E:\\学习\\a");
//拷贝目标
File destFile = new File("C:\\Users\\22721\\Desktop");
//调用copyDri方法
copyDri(srcFile,destFile);
}
/**
* 拷贝目录
* @param srcFile 拷贝源
* @param destFile 拷贝目标
*/
private static void copyDri(File srcFile, File destFile) {
if (srcFile.isFile()){
//src.File
//是文件就拷贝,且边读边写
FileInputStream in = null;
FileOutputStream out = null;
File file;
try {
//读srcFile这个文件
in = new FileInputStream(srcFile);
String path = destFile.getAbsolutePath() + srcFile.getAbsolutePath().substring(2);
out = new FileOutputStream(path);
//一边读一边写
//一次性复制1m
byte[] bytes = new byte[1024*1024];
int readCount = 0;
while ((readCount= in.read(bytes))!=-1){
out.write(bytes,0, readCount);
}
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (out!=null){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (in!=null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//srcFile如果是一个文件,结束递归
return;
}
//获取源下面的子目录(拿到当前文件夹srcFile下的子文件)
File[] files = srcFile.listFiles();
//代码测试(写一点测试一点)
//System.out.println(files.length);
for (File file:files) {
//获取所有文件的绝对路径(包括目录和文件)
//System.out.println(file.getAbsolutePath());
//这个file可能是文件或者目录
//
if (file.isDirectory()){
//System.out.println(file.getAbsolutePath());
String srcDri = file.getAbsolutePath();
//获取原目标路径,去掉前两位(E:\\学习\\a)---->(\\学习\a)
//System.out.println(srcDri.substring(2));
String destDri = destFile.getAbsolutePath() + srcDri.substring(2);
File newFile = new File(destDri);
//如果newFile不存在,则新建
if (!newFile.exists()){
newFile.mkdirs();
}
//测试输出文件路径
//System.out.println(destDri);
}
copyDri(file,destFile);
}
}
}
运行结果:
运行后文件被拷贝到桌面(目标文件夹):
本文作者: CodeAnime
本文链接: https://codeanime.cc/Java-io%E6%B5%81-%E6%8B%B7%E8%B4%9D%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%8B%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E5%92%8C%E7%9B%AE%E5%BD%95.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!