package Lianxi24;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Test_IO {
// 输入一个路径,将该路径下(包括子文件夹)所有以.java结尾的文件复制到别的路径之后再改名为.txt
// 键盘录入一个路径,判断录入的路径是否正确
// 定义一个递归的方法
// 将录入的路径封装成file数组
// 遍历数组,判断是文件路径还是文件夹路径
// 如果是文件路径就读写到别的文件夹中
// 如果是文件夹路径就递归调用
public static void main(String[] args) throws IOException {
File src = getFile();
File dest = getFile();
if (!src.equals(dest)) {
diGui(src, dest);
} else {
System.out.println("录入了相同的文件名");
}
}
public static File getFile() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入文件路径:");
while (true) {
String line = sc.nextLine();
File file = new File(line);
if (!file.exists()) {
System.out.println("输入的文件路径不存在,请重新输入:");
} else if (file.isFile()) {
System.out.println("输入的是文件夹路径请重新输入:");
} else {
return file;
}
}
}
public static void diGui(File src, File dest) throws IOException {
File newSrc = new File(dest, src.getName());// 在目标文件中创建与原文件相同的文件
newSrc.mkdir();
File[] sArr = src.listFiles(); // 将原文件封装成file数组
for (File file : sArr) { // 遍历数组,获取到每一个文件
if (file.isFile() && file.getName().endsWith(".java")) { // 判断是否是文件并以.java结尾的
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(new File(newSrc, file.getName().replaceAll(".java", ".txt"))));
int b;
while ((b = bis.read()) != -1);
{
bos.write(b);
}
bis.close();
bos.close();
} else if (file.isDirectory()) {
diGui(file, newSrc);
}
}
}
}
|