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();
		}
	}
}

 

转载于:https://www.cnblogs.com/Big-Boss/p/9435169.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Java的File类和FileWriter类来生成并保存txt文件。具体步骤如下: 1. 创建一个File对象,指定txt文件在局域网内某台计算机的指定文件夹的路径。 ```java File file = new File("\\\\计算机名\\文件夹名\\文件名.txt"); ``` 2. 创建一个FileWriter对象,并将其与File对象关联。 ```java FileWriter writer = new FileWriter(file); ``` 3. 使用FileWriter的write方法写入文本内容。 ```java writer.write("这是一段文本内容。"); ``` 4. 关闭FileWriter对象,释放资源。 ```java writer.close(); ``` 完整代码示例: ```java import java.io.File; import java.io.FileWriter; import java.io.IOException; public class TxtFileGenerator { public static void main(String[] args) throws IOException { // 创建一个File对象,指定txt文件在局域网内某台计算机的指定文件夹的路径 File file = new File("\\\\计算机名\\文件夹名\\文件名.txt"); // 创建一个FileWriter对象,并将其与File对象关联 FileWriter writer = new FileWriter(file); // 使用FileWriter的write方法写入文本内容 writer.write("这是一段文本内容。"); // 关闭FileWriter对象,释放资源 writer.close(); } } ``` 注意事项: 1. 要在路径使用双斜杠(\\)代替单斜杠(/)。 2. 计算机名要使用该计算机的名称,而不是IP地址。 3. 计算机名和文件夹文字符可能会出现乱码问题,可以使用英文字符或者将它们转换成Unicode编码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值