Java IO —— 实现文件夹及里面全部内容的复制转移
程序员文章站
2022-07-09 22:34:14
...
记录一下这个代码的思路
package review.IO;
import java.io.*;
public class test3 {
public static void main(String[] args) throws IOException {
File f1 = new File("D:\\java\\test1");
File f2 = new File("D:\\java\\test2");
copyDic(f1,f2);
}
/**
* 将文件从sourceFile写到goalFile
* @param sourceFile 源目录,是文件
* @param goalFile 目标目录,是文件
* @throws IOException
*/
public static void copyFile(File sourceFile,File goalFile) throws IOException{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(sourceFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(goalFile));
int len = 0;
byte[] bytes = new byte[1024];
while((len=bis.read(bytes))!=-1){
bos.write(bytes,0,len);
bos.flush();
}
bos.close();
bis.close();
}
/**
* 用来遍历文件夹中的每一个File对象,如果是文件夹,则调用递归,继续遍历此文件夹的内容
* 如果是文件,则调用copyFile()方法,将文件从源目录写到目标目录
* @param sourceDir 源目录,是文件夹
* @param goalDir 目标目录,是文件夹
* @throws IOException
*/
public static void copyDic(File sourceDir,File goalDir) throws IOException{
//如果源目录不存在则打印目录不存在
//如果目标目录不存在,则新建该目录,注意mkdirs()是创建多级文件夹,不会创建文件
if(!sourceDir.exists() || !sourceDir.isDirectory()){
System.out.println("目录不存在");
return;
}
if(!goalDir.exists()){
goalDir.mkdirs();
}
File[] files = sourceDir.listFiles();
//listFiles是将当前目录下的文件放入File[]数组中
//所以files.length就是当前文件夹下面有几个文件,files[i]就是具体的文件夹或文件
if(files != null){
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
//public File(String parent,String child)
//根据一个目录和一个子文件或目录得到一个File对象
//getName是当前文件的名字
//注意files[i]是源文件里面的文件,目标文件的路径要靠这样创建一个新目录
File sFile = new File(sourceDir.getAbsolutePath(),files[i].getName());
File gFile = new File(goalDir.getAbsolutePath(),files[i].getName());
copyDic(sFile,gFile);
}
else{
File sFile = files[i];
File gFile = new File(goalDir,files[i].getName());
copyFile(sFile,gFile);
}
}
}
}
}
整个文件夹的整体转移完成
上一篇: ASP.NET Core SignalR 入门教程
下一篇: Linux系统下文件权限