package zuoye01;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
public class A {
static File dir;
static File target;
/**
* 拷贝文件(用的字节流,避免照片打不开的情况发生)
* @param dir
* @param target
* @return
* @throws IOException
*/
public static boolean fileCopy(File dir,File target) throws IOException {
File f1=dir;
//File f2=target;
File f2=new File(target,dir.getName());
FileInputStream fin=new FileInputStream(f1);//文件输入流--读
FileOutputStream fout=new FileOutputStream(f2);//文件输出流--写
byte[] b=new byte[fin.available()];
System.out.println(fin.available());
fin.read(b);
fout.write(b);
fout.close();
fin.close();
return true;
}
//实现文件夹的拷贝,拷贝后删除原目录
/**
* dir 先遍历--->在target目标路径创建一个新目录-->原文件{文件(拷贝)+目录(调用自身)}
* @param source 原文件
* @param target 目标文件路径
* @return
* @throws IOException
*/
public static void fileCopy1(File dir,File target) throws IOException {
File f1=dir;
File f2=target;
//创建新目录
f2=new File(f2,f1.getName());
if(!f2.exists()) {
f2.mkdir();
//System.out.println("创建成功");
}
File[] files=f1.listFiles();
if(files.length>0&&files!=null) {
for(File f:files) {//遍历目录
System.out.println("----"+f.getName());
if(f.isFile()) {//文件--->拷贝
System.out.println(f.getName());//文件名
A.fileCopy(f, f2);
f.delete();
}
if(f.isDirectory()) {//目录--->遍历
System.out.println(f.getName());
fileCopy1(f,f2);
f.delete();
}
}
}
f1.delete();
// System.out.println("成功");
}
/**
*
* 测试方法
*
*/
public static void main(String[] args) throws IOException {
A.fileCopy1(new File("D:\\a"),new File("D:\\B"));//拷贝+删除
}
java 实现文件夹的复制+删除原文件
该代码示例展示了如何使用Java进行文件和文件夹的复制操作,通过字节流确保照片等大文件能正确拷贝,并在完成后删除源文件。主要方法包括fileCopy用于单个文件的拷贝,以及fileCopy1递归处理整个目录的拷贝和删除。
摘要由CSDN通过智能技术生成