IO流:指定一个目录,将该目录下(包含所有的子级目录)所有的Png图片复制到另一个目录下
import java.io.*;
public class ImageCopy {
public static void main(String[] args) {
copy("D:\\课件、视频");
}
public static void copy(String path){
File file = new File(path);
//file.list():返回某个目录下的所有文件和目录的 文件名,返回的是String数组
//file.listFiles():返回某个目录下所有文件和目录的 绝对路径,返回的是File数组
File[] files = file.listFiles();
for (File f:files){
//判断是否是文件夹
if (f.isDirectory()){
copy(f.getAbsolutePath());
continue;
}
//判断后缀是否是.png
if (f.getName().endsWith(".png")){
//复制png文件
copyPng(f);
System.out.println("Copy完成");
}
}
}
public static void copyPng(File file) {
System.out.println(file.getName());
BufferedInputStream inputStream = null;
BufferedOutputStream outputStream = null;
try {
inputStream = new BufferedInputStream(new FileInputStream(file.getAbsolutePath()));
outputStream = new BufferedOutputStream(new FileOutputStream("D:\\ImageCopyTest\\" + file.getName()));
//定义一个byte[]数组用来接收,每次读取1KB数据
byte[] bt = new byte[1024];
int n = -1;
while ((n = inputStream.read(bt)) != 1){
System.out.println(n);
outputStream.write(bt,0,n);
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
inputStream.close();
outputStream.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
拷贝成功
遇到的错误
这里需要注意的是输出的文件夹不能在被拷贝文件夹内,否则会出现重复读写引起的拷贝不成功问题,只能在被拷贝文件夹同级或其他文件夹目录