用javaSE如何修改txt文本内容
自己创建一个文本文件为record.txt后,写入了如下两行数据:
Java code
00 11 33 33 44 
55 66 77 88 99
然后要把第一个出现的“33”改成符合顺序的“22”.
用代码怎么改呢??
------解决方案--------------------执行下面程序:record1.txt为lz所要的结果。
import java.io.*;
public class BufferedReaderTest {
	public static void main(String[] args) {
		BufferedReader br = null;
		InputStreamReader isr = null;
		FileInputStream fis = null;
		BufferedWriter bw = null;
		OutputStreamWriter osw = null;
		FileOutputStream fos = null;
		try {
			fis = new FileInputStream("D:\\record.txt");
			isr = new InputStreamReader(fis);
			br = new BufferedReader(isr);
			fos = new FileOutputStream("D:\\record1.txt");
			osw = new OutputStreamWriter(fos);
			bw = new BufferedWriter(osw);
			String str = null;
			int i = 0;
			while ((str = br.readLine()) != null) {
				String[] ss = str.split(" ");
				if (i == 0) {
					for (String s : ss) {
						// 避免一行中出现多个33
						if ("33".equals(s) && i == 0) {
							str = str.replaceFirst("33", "22");
							i++;
						}
					}
				}
				bw.write(str);
				bw.newLine();
				bw.flush();
			}
		} catch (
IOException e) {
			e.printStackTrace();
		} finally {
			try {
				bw.close();
				osw.close();
				fos.close();
				br.close();
				isr.close();
				fis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
------解决方案--------------------就是采取这种方法的,先把所有的文字全部读入到内存中,改完后再写回去。
所有的文本编辑器也都是这么做的。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------是的,如果用 RandomAccessFile 也可以回去的,但是很麻烦,得判断换行符,得不偿失。
从头一行一行地读的话,速度是非常快的。
PS:为什么不先读 80 行,再读 100 行呢?奇怪,一定要先读完 100 行,再去读 80 行么?