特定类型文件复制功能 java实现
所属分类 java
浏览量 587
从指定目录 复制指定类型的文件 到 指定的目录
譬如只复制 .md .png 文件
package dyyx.tool;
import java.io.File;
import java.io.FileFilter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
// 复制指定类型的文件
public class CopyFiles {
private static final Set TYPES = new HashSet<>();
private static final FileFilter filter = new MyFileFilter();
static {
TYPES.add(".png");
TYPES.add(".md");
}
public static void main(String[] args) throws Exception {
List files = new ArrayList<>();
String src = "/Users/dugang/fatework/FATE";
File srcFile = new File(src);
listFiles(srcFile, files);
String destDir = "/Users/dugang/tmp/fate1.8docs";
for (File file : files) {
String fullpathSrc = file.getAbsolutePath();
String shortpathSrc = fullpathSrc.substring(src.length());
// /Users/dugang/fatework/FATE/fateflow/doc/fate_flow_http_api.md
// /fateflow/doc/fate_flow_http_api.md
// System.out.println(fullpathSrc);
// System.out.println(shortpathSrc);
String fullpathDest = destDir + shortpathSrc;
copy(fullpathSrc, fullpathDest);
}
System.out.println("copy done,files count " + files.size());
System.out.println("src=" + src);
System.out.println("dest=" + destDir);
}
private static void copy(String src, String dest) throws Exception {
mkdirs(dest);
Path srcPath = Paths.get(src);
Path destPath = Paths.get(dest);
Files.copy(srcPath, destPath);
}
private static void mkdirs(String file) {
File f = new File(file);
if (f.exists()) {
return;
}
File pf = f.getParentFile();
if (pf.exists()) {
return;
}
pf.mkdirs();
}
public static void listFiles(File dir, List files) {
if (!dir.isDirectory()) {
return;
}
File[] childFiles = dir.listFiles(filter);
if (childFiles == null || childFiles.length <= 0) {
return;
}
for (File file : childFiles) {
if (file.isDirectory()) {
listFiles(file, files);
} else {
files.add(file);
}
}
}
private static class MyFileFilter implements FileFilter {
public boolean accept(File pathname) {
if (pathname.isDirectory()) {
return true;
}
if (pathname.getAbsolutePath().contains(".github")) {
return false;
}
for (String item : TYPES) {
if (pathname.getName().toLowerCase().endsWith(item)) {
return true;
}
}
return false;
}
}
}
https://gitee.com/dyyx/hellocode/blob/master/src/dyyx/tool/CopyFiles.java
上一篇
下一篇
Python pip 安装
python pip 配置国内镜像
Docker三剑客
Python3中的 pyi 文件
联邦学习框架FATE简介
Python3虚拟环境venv