package com.zsm.iothread.test.io.practicetest;
import org.junit.Test;
import java.io.*;
/**
* 拷贝一张图片,从一个目录到另外一个目录下(PS:是拷贝是不是移动)
*/
public class Test6 {
@Test
public void test(){
//指定源目录或文件和复制到的指定路径
String file = "D:\\FeiQ\\Recv Files\\第 07 周\\35.Thread(下)";
String path = "C:\\Users\\12442\\Desktop\\TestIO";
File srcFile = new File(file);
File copyPath = new File(path);
//调用copy()方法
copy(srcFile,copyPath);
}
//定义一个copy文件的方法,传两个File类型参数,第一个可能是普通文件也可能是目录路径,第二个是copy到的路径
public void copy(File file,File path){
//要copy的目录的位置
File copyFile = new File(path,file.getName());
//判断file为目录的情况
if (file.isDirectory()){
//创建目录
copyFile.mkdirs();
//列出当前目录下的所有文件及子目录
File[] files = file.listFiles();
//遍历
for (int i = 0; i < files.length; i++) {
//递归调用
copy(files[i],copyFile);
}
}else {
//为文件就直接copy
writeFile(file, copyFile);
}
}
private void writeFile(File file, File path) {
try(FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(path)
) {
//每次读或写数据的长度为1k
byte[] bytes = new byte[1024];
//每次读或写文件的长度
int length;
//读数据,写数据
while((length = fis.read(bytes))!=-1){
fos.write(bytes,0,length);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
IO流copy一个目录下的所有文件或单个文件
最新推荐文章于 2022-09-07 00:02:24 发布