[Java] 纯文本查看 复制代码 import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
public class Demo2 {
private static Scanner sc = new Scanner(System.in);
private static File copy;
/**
* @param args
*/
public static void main(String[] args) {
/*
* 4、编写一个程序,把指定目录下的所有的带.java文件都拷贝到另一个目录中,拷贝成功后,把后缀名是.java的改成.txt。
*
* 解题思路: 1.使用键盘录入接收一个文件夹路径, 输入正确则返回一个文件夹路径, 不正确则提示并 死循环接收.
*
* 2.再让其输入一个存放路径,跟第1步相同 3.再使用递归方法查询指定目录下的文件,如果是文件夹,就递归调用 4.如果是文件,就判断
* 如果是.java文件,如果是.java文件则使用拷贝, 使用高效的字节读取流将文件读取, 再使用高效的字节输出流将文件名修改并复制
*
* 其他的文件就不搭理
*/
System.out.println("请输入要被拷贝的文件夹路径:");
File f = getPath();
System.out.println("请输入要复制到指定的文件夹路径:");
copy = getPath();
digui(f);
}
private static void digui(File f) {
/**
* * 3.再使用递归方法查询指定目录下的文件,如果是文件夹,就递归调用 4.如果是文件,就判断
* 如果是.java文件,如果是.java文件则使用拷贝, 使用高效的字节读取流将文件读取, 再使用高效的字节输出流将文件名修改并复制
*
* 其他的文件就不搭理
*/
File[] listFiles = f.listFiles();
for (File file : listFiles) {
if (file.isDirectory()) {
digui(file);// 如果是文件夹,则递归调用
} else {
/**
* 4.如果是文件,就判断 如果是.java文件,如果是.java文件则使用拷贝, 使用高效的字节读取流将文件读取,
* 再使用高效的字节输出流将文件名修改并复制
*/
if(file.getName().endsWith(".java")){
System.out.println(file.getName());
try {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
File name = new File(copy,file.getName().replace(".java", ".txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(name));
int b;
while((b = bis.read()) != -1){
bos.write(b);
}
bis.close();
bos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
private static File getPath() {
while (true) {
// 如果不是正确的路径,则提示请输入正确的路径
File file = new File(sc.nextLine());
if (!file.exists()) {
System.out.println("请输入正确的路径");
} else if (file.isFile()) {
System.out.println("你输入的是文件路径,请输入文件夹路径");
} else {
return file;
}
}
}
}
|