package cn.itcast;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
public class CopyTxtFileDemo {
/*
* 复制文件并改名案例
*/
public static void main(String[] args) throws IOException {
// 获取数据源文件夹对象
File srcFileDir = new File("C:\\Users\\SuperHan\\Desktop\\20150716java基础班相关");
/*
// 补充一下: 如果不采用文件名称过滤器,一样可以自己去判断实现,但不高大上
File[] srcFiles = srcFileDir.listFiles();
// 创建File集合接收符合条件的File对象
ArrayList<File> list = new ArrayList<File>();
for (File file : srcFiles) {
if (file.isFile() && file.getName().endsWith(".txt")) {
list.add(file);
}
}
// 接下来遍历集合获取到每一个File对象,操作与下面一致了。
*/
// 获取数据源文件夹下所有符合条件的文件对象数组 -- 采用文件名称过滤器
File[] srcFiles = srcFileDir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File file = new File(dir, name); // 根据父目录对象 和 文件名称创建文件对象
return file.isFile() && name.endsWith(".txt");
}
});
// 创建目的地文件夹
File destFileDir = new File("D:\\jad");
if (!destFileDir.exists()) {
destFileDir.mkdir();
}
// 遍历文件数组,获取到每一个文件
for (File file : srcFiles) {
// 每一个需要拷贝的源文件 -- file
// 获取到该文件的名字,以用来创建新文件的名称
String name = file.getName();
String newName = name.replace(".txt", ".jad");
// 把目的地文件拼起来 -- 目的地文件
File destFile = new File(destFileDir, newName); // 根据父目录对象 和 文件名称创建文件对象
// 有了数据源和目的地,封装流对象
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter(destFile)); // -- 创建目标文件
// 读写操作
String line = null;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
bw.flush();
}
// 释放资源
bw.close();
br.close();
}
}
}
|
|