修改文件的特定行-Java

修改文件的特定行-Java,java,Java,我想知道在Java中是否可以修改文本文件中的特定行。我有一个如下所示的文本文件: 第1行:0 第2行:1 第3行:0 第4行:1 我用的是: FileWriter fw = new FileWriter("seats.txt",true); BufferedWriter bw = new BufferedWriter(fw); bw.write("2", 0, 1); 输出是这样的: 第1行:0 第2行:1 第3行:0 第4行:12 等等 如果我将偏移设置为0以外的任何其他值,我将收到以下异常

我想知道在Java中是否可以修改文本文件中的特定行。我有一个如下所示的文本文件:

第1行:0

第2行:1

第3行:0

第4行:1

我用的是:

FileWriter fw = new FileWriter("seats.txt",true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("2", 0, 1);
输出是这样的:

第1行:0

第2行:1

第3行:0

第4行:12

等等

如果我将偏移设置为0以外的任何其他值,我将收到以下异常:

线程“AWT-EventQueue-0”java.lang.StringIndexOutOfBoundsException中出现异常:字符串索引超出范围:2


基本上我想做的是切换值。如果第x行有“0”,我想在其中加一个“1”,反之亦然。行上不会存储任何其他信息,只有1或0。

BufferedWrite.write()方法中的偏移量不是要写入的文件中的偏移量,而是要写入的字符串中的偏移量。 如果查看文档,您将看到以下内容:

write(String s, int off, int len)
Writes a portion of a String.
所以基本上你要做的就是把字符串s从字符号写到字符号len-1

我建议(据我所知)也创建一个BufferedReader,读取所有文件,然后覆盖现有文件,使用一些循环和条件一次检查每一行,然后写入相应的值。
您可以改为使用write(int c)方法,因为您只写入0或1。

BufferedWrite.write()方法中的偏移量不是您试图写入的文件中的偏移量,而是您在其中的字符串中的偏移量。 如果查看文档,您将看到以下内容:

write(String s, int off, int len)
Writes a portion of a String.
所以基本上你要做的就是把字符串s从字符号写到字符号len-1

我建议(据我所知)也创建一个BufferedReader,读取所有文件,然后覆盖现有文件,使用一些循环和条件一次检查每一行,然后写入相应的值。
您可以改用write(int c)方法,因为您只写0或1。

我已经使用BufferedReader读取了我的文件,但我没有想到用修改过的数组重写所有文件。谢谢,我会用你的建议!我已经使用BufferedReader读取了我的文件,但我没有想到要用修改过的数组重写所有文件。谢谢,我会用你的建议!