Java以流的方式将指定文件夹里的.txt文件全部复制到另一文件夹,并删除原文件夹中所有.txt文件
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.List; /** * 将指定文件夹里的.txt文件全部复制到另一文件夹,并删除原文件夹中所有.txt文件 * @author jinghui.wu * */ public class TxtFilesCopyTest { /** * 获取指定路径下所有.txt文件 * @param oldPath 指定的原文件夹路径 * @param newPath 指定的新文件夹路径 * @return 结果 */ public String getAllFilesByPath(String oldPath, String newPath) { List<File> files = new ArrayList<File>(); // 获取指定路径的文件夹 File file = new File(oldPath); // 获取文件夹下所有文件 File[] tempList = file.listFiles(); if (tempList == null || tempList.length == 0) { return "未找到文件!"; } for (File f : tempList) { if (f.isFile()){ // 判断是否为文件 // 获取文件名 String fileName = f.getName(); // 通过切割获取文件后缀名 String str = fileName.substring(fileName.indexOf("."), fileName.length()).toLowerCase(); if (str.equals(".txt")) { files.add(f); } } } copyAllFiles(files, newPath); return "复制成功!"; } /** * 复制所有.txt文件到另一文件夹 * @param files 要复制的.txt文件集合 * @param newPath 新文件夹路径 */ private void copyAllFiles(List<File> files, String newPath) { // 根据给定路径获取文件夹 File folder = new File(newPath); // 判断是否存在 if (!folder.exists()) { // 指定文件夹不存在,新建 folder.mkdirs(); } for (File file : files) { try { /* 读入TXT文件 */ InputStreamReader reader = new InputStreamReader(new FileInputStream(file), "UTF-8"); BufferedReader br = new BufferedReader(reader); String line = ""; List<String> lineList = new ArrayList<>(); while ((line = br.readLine()) != null) { // 判断本行是否为null lineList.add(line); // 将每行内容放入集合中 } br.close(); /* 写入Txt文件 */ File writeFile = new File(newPath + "/" + file.getName()); writeFile.createNewFile(); //BufferedWriter bw = new BufferedWriter(new FileWriter(writeFile)); // FileWriter没有setEncoding方法来设置编码级,会出现中文乱码问题,所以换成下面方法 BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (new FileOutputStream (writeFile,true),"UTF-8")); for (int j = 0; j < lineList.size(); j++) { bw.write(lineList.get(j)); bw.write("\r\n"); //换行 } bw.flush(); bw.close(); } catch (Exception e) { e.printStackTrace(); } // 删除原文件夹中已复制过的.txt文件 file.delete(); } } }