[Java] 纯文本查看 复制代码 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.util.Arrays;
import java.util.List;
import org.junit.Test;
/**
*
* 创建一个集合,内容有:[“测试题”,“点招”,“模拟练习”,“编程”];
*
* 手动在D盘根目录下新建“test”文件夹,递归遍历“D:\\ks”文件夹下所有文件,将与该集合中所包含元素名称相同的”.txt”文件复制一份到“test”
* 文件夹中;
*
*/
public class Demo00 {
public static void main(String[] args) throws IOException {
String[] filenames = { "测试题", "点招", "模拟练习", "编程" };
List<String> list = Arrays.asList(filenames);
foo(new File("D:\\ks"),list);
}
public static void foo(File dir,List<String> list) throws IOException {
if (dir.isDirectory()) {
File[] listFiles = dir.listFiles();
for (File file : listFiles) {
if (file.isDirectory()) {
foo(file,list);
} else {
String name = file.getName();
name = name.replaceAll("\\.txt", "");
if (list.contains(name)) {
copy(file);
}
}
}
}
}
private static void copy(File file) throws IOException {
int count = 0;
FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
File outFile = new File("D:/test",file.getName());
String name = outFile.getName();
name = name.replaceAll("\\.txt", "");
while (outFile.exists()) {
count++;
outFile = new File("D:/test",name+"("+count+").txt");
}
FileOutputStream fileOutputStream = new FileOutputStream(outFile);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
for (int read = 0; (read = bufferedInputStream.read()) != -1;) {
bufferedOutputStream.write(read);
}
bufferedOutputStream.close();
bufferedInputStream.close();
}
@Test
public void makeDir() {
File file = new File("D:/test");
file.mkdir();
}
} |