1.深度遍历指定目录rootPath中所有的子文件、子目录
2.将所有图片(后缀名为*.png\*.jpg\*.webp)复制到指定目录backupPath
3.返回本次备份的图片数量
package exercise;
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.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
public class ex01 {
public static void main(String[] args) {
int ret = backupImage("F:\\Test\\rootPath", "F:\\Test\\backupPath");
System.out.println(ret);
}
/*
* 图片备份
* 1.深度遍历指定目录rootPath中所有的子文件、子目录
* 2.将所有图片(后缀名为*.png\*.jpg\*.webp)复制到指定目录backupPath
* 3.返回本次备份的图片数量
*/
static int counter = 0;
public static int backupImage(String rootPath, String backupPath) {
try {
Files.walkFileTree(Paths.get(rootPath), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
// 判断是否是一张图片
if(file.toString().endsWith(".jpg") || file.toString().endsWith("..png") ||
file.toString().endsWith(".webp")) {
// 备份图片
File backImgFile = new File(backupPath + "\\" + file.toFile().getName());
System.out.println(backImgFile);
counter++;
// 方式1
// 创建输入流(用于读取图片)
// 创建输出流(用于写入图片)
try(BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(file.toFile()));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(backImgFile));){
//边读边写
byte[] buff = new byte[1024];
int len = -1;
while((len = bis.read(buff)) != -1) {
bos.write(buff);
}
}
// 方式2
// Files.copy(file, backImgFile.toPath());
}
return super.visitFile(file, attrs);
}
});
} catch (IOException e) {
e.printStackTrace();
}
return counter;
}
}
运行结果: