java实现读取txt文件和将内容写入txt文件

该代码示例展示了如何使用Java读取两个TXT文件,将数据合并,并将结果写入新的TXT文件。主要涉及文件输入输出流、BufferedReader和BufferedWriter的使用,实现了行合并操作。

1.java读取txt和写入txt文件

package com.ztesoft.TestClusterHHHT;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;

import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class TestCreate {

	public static void main(String[] args) throws IOException {

		Map<Integer, String> rowDataMap = readTxtFile("E:\\createTable\\mcc_sub_extend_001.txt");
		Map<Integer, String> provinceMap = readTxtFile("E:\\createTable\\province.txt");

		List<String> textList = new ArrayList<String>(10000);

		Iterator<Integer> iterator = rowDataMap.keySet().iterator();
		while (iterator.hasNext()) {
			Integer key = iterator.next();
			String rowdata = rowDataMap.get(key);
			String province = provinceMap.get(key);
			// 对文件进行行合并
			textList.add(province + "," + rowdata);
		}

		// 将内容写入文件
		writeTxtFile("E:\\createTable\\merge.txt", textList);

	}

	/**
	 * 根据文件路径读取文件
	 * 
	 * @param filePath
	 *            文件路径
	 * @return Map<Integer, String>
	 */
	private static Map<Integer, String> readTxtFile(String filePath) {

		Map<Integer, String> textMap = new HashMap<Integer, String>(10000);

		try (FileInputStream fileInputStream = new FileInputStream(filePath);
				InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
				BufferedReader bufferedReader = new BufferedReader(inputStreamReader);) {

			String line = null;
			Integer i = 0;
			while ((line = bufferedReader.readLine()) != null) {
				i = i + 1;
				textMap.put(i, line);
			}

		} catch (Exception e) {
			e.printStackTrace();

		}

		return textMap;
	}

	/**
	 * 写入文件
	 * 
	 * @param filePath
	 *            文件路径
	 * @param textList
	 *            文件行内容
	 * @throws IOException
	 *             异常信息
	 */
	private static void writeTxtFile(String filePath, List<String> textList) throws IOException {

		File file = new File(filePath);
		file.createNewFile();

		try (FileWriter fileWriter = new FileWriter(file);
				BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);) {

			for (String text : textList) {
				bufferedWriter.write(text);
	            bufferedWriter.newLine();
			}

			bufferedWriter.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

Java 中,使用 I/O 流可以高效地实现TXT 文件读取写入操作。以下分别介绍如何通过标准 I/O NIO 的方式完成这些操作。 ### 读取 TXT 文件 #### 使用标准 I/O 流读取文件 可以通过 `BufferedReader` `FileReader` 组合来逐行读取文件内容,这种方式适用于文本文件的处理。 ```java import java.io.*; public class ReadFileExample { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) { String line; while ((line = br.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } } ``` #### 使用 NIO 读取文件 Java NIO 提供了更高效的文件访问方式,通过 `FileChannel` 缓冲区 `ByteBuffer` 来实现非阻塞的读取。 ```java import java.io.*; import java.nio.*; import java.nio.channels.*; public class NIOReadFile { public static void main(String[] args) throws IOException { RandomAccessFile file = new RandomAccessFile("test.txt", "r"); FileChannel channel = file.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(1024); while (channel.read(buffer) > 0) { buffer.flip(); while (buffer.hasRemaining()) { System.out.print((char) buffer.get()); } buffer.clear(); } channel.close(); file.close(); } } ``` ### 写入 TXT 文件 #### 使用标准 I/O 流写入文件 可以使用 `BufferedWriter` `FileWriter` 将数据写入 TXT 文件,支持逐行写入。 ```java import java.io.*; public class WriteFileExample { public static void main(String[] args) { try (BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) { bw.write("这是第一行"); bw.newLine(); bw.write("这是第二行"); } catch (IOException e) { e.printStackTrace(); } } } ``` #### 使用 NIO 写入文件 通过 `FileChannel` `ByteBuffer` 可以将数据写入文件,适用于需要高性能写入的场景。 ```java import java.io.*; import java.nio.*; import java.nio.channels.*; public class NIOWriteFile { public static void main(String[] args) throws IOException { RandomAccessFile file = new RandomAccessFile("output.txt", "rw"); FileChannel channel = file.getChannel(); ByteBuffer buffer = ByteBuffer.wrap("这是通过 NIO 写入内容\n".getBytes()); channel.write(buffer); channel.close(); file.close(); } } ``` ### 总结 - 标准 I/O 更适合处理文本文件,使用 `BufferedReader` `BufferedWriter` 可以简化代码并提高效率。 - Java NIO 更适合处理大文件或需要高性能的场景,支持非阻塞 I/O 操作[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值