package file;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.FileWriter;
public class TestStream{
public static void main(String[] args){
copyFile("D:/AA","D:/A");
}
public static void copyFile(String srcPath,String destPath){
File srcFile = new File(srcPath);
File destFile = new File(destPath);
// 如果源文件不存在
if(!srcFile.exists()){
throw new RuntimeException("找不到源文件");
}
// 如果目标文件不存在
if(!destFile.exists()){
destFile.mkdirs();
}
// 如果源文件是文件
if(srcFile.isFile()){
// 如果目标文件是文件
if(destFile.isFile()){
copy(srcFile.getAbsolutePath(),destFile.getAbsolutePath());
}
// 如果目标文件是文件夹
else if(destFile.isDirectory()){
File newFile = new File(destFile,srcFile.getName());
copy(srcFile.getAbsolutePath(),newFile.getAbsolutePath());
}
}
// 如果源文件是文件夹
else if(srcFile.isDirectory()){
if(destFile.isFile()){
throw new RuntimeException("源文件是文件夹,目标文件是文件,无法进行复制");
}
else if(destFile.isDirectory()){
File fs[] = srcFile.listFiles();
for(File f:fs){
File newFile = new File(destFile,f.getName());
// 如果子级文件是文件夹,则递归
if(f.isDirectory()){
copyFile(f.getAbsolutePath(),newFile.getAbsolutePath());
}
if(f.isFile()){
copy(f.getAbsolutePath(),newFile.getAbsolutePath());
}
}
}
}
}
// 复制文件
// public static void copy(String srcPath,String destPath){
// byte bytes[] = new byte[1024];
// try(FileInputStream fis = new FileInputStream(srcPath);
// FileOutputStream fos = new FileOutputStream(destPath)){
// while(true){
// int len = fis.read(bytes);
// if(len==-1)
// break;
// fos.write(bytes,0,len);
// }
// }catch(IOException e){
// e.printStackTrace();
// }
// }
// 复制文件(另一种方式)
public static void copy(String srcPath,String destPath){
File f1 = new File(srcPath);
File f2 = new File(destPath);
try(FileReader fis = new FileReader(f1);
BufferedReader br = new BufferedReader(fis);
FileWriter fw = new FileWriter(f2);
PrintWriter pw = new PrintWriter(fw)){
while (true){
String line =br.readLine();
if(null==line)
break;
pw.write(line);
}
}catch(IOException e){
e.printStackTrace();
}
}
}
Java 复制文件/文件夹
最新推荐文章于 2024-04-17 05:18:29 发布