import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
题目:
编写一个程序,将指定目录下所有.java文件拷贝到另一个目录中,
并将扩展名改为.txt
思路:
1、用File对象封装目录
2、通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组
3、遍历这个File数组,得到每一个File对象
4、判断该File对象是否是文件
a、如果是文件
b、继续判断是否以.java结尾
是:先改名后复制文件
否:不复制
总结: 先复制, 后改名
*/
public class Prictice2 {
public static void main(String[] args) throws IOException {
File file = new File("D:\\new_test");
// 调用方法,遍历文件或文件夹,将所有.java后缀的改为.txt,随后复制给E盘Test文件夹中
lookFiles(file);
System.out.println("先复制.java文件,随后写入文件夹Test时,将文件后缀写为: .txt, 完毕");
}
private static void lookFiles(File file) throws IOException {
// 使用listFiles()遍历文件
File[] files = file.listFiles();
for (File f : files) {
if(f.isFile()) {
if(f.getName().endsWith(".java")) {
// 取得它的小数点的角标
int index = f.getAbsolutePath().lastIndexOf(".");
// 利用角标,截取字符串
String str = f.getAbsolutePath().substring(index);
// 将.java后缀 替换成 .txt
String newFileName = f.getName().replace(str, ".txt");
// renameTo(File f)方法怎么用? 答: 里面传文件
// 调用拷贝方法
copyFiles(f, newFileName);
}
} else {
// 递归调用方法,是文件夹的话继续遍历
lookFiles(f);
}
}
}
// 复制文件方法
private static void copyFiles(File file, String newFileName) throws IOException {
File newFile = new File("E:\\Test", newFileName);
// 1.创建流
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter(newFile));
// 2.写入数据
// a.声明有效长度
int len;
// b.声明字符数组
char[] ch_arr = new char[1024];
while((len = br.read(ch_arr)) != -1) {
// 写入数据
bw.write(ch_arr, 0, len);
}
// 3.关闭资源
bw.close();
br.close();
}
}
|
|