2016-05-11 104 views
1

我想知道在Java中是否可以修改文本文件中的特定行。我有一個文本文件,它看起來像這樣:修改文件的特定行 - Java

ROW1:0

2行:1

ROW3:0

ROW4:1

我使用這個:

FileWriter fw = new FileWriter("seats.txt",true); 
BufferedWriter bw = new BufferedWriter(fw); 
bw.write("2", 0, 1); 

而輸出是這樣的:

ROW1:0

ROW2:1

ROW3:0

ROW4:12

如果我設置的偏移量的任何其它值大於0,I收到此異常:

線程「AWT-EventQueue-0」中的異常java.lang.StringIndexOutOfBoundsException:String index o ut範圍:2

基本上我想要做的是切換值。如果我在第x行有「0」,我想在那裏放一個「1」,反之亦然。沒有其他信息將被存儲在一行上,只有一個或一個0.

回答

0

BufferedWrite.write()方法中的偏移量不是您嘗試寫入的文件中的偏移量,而是在字符串中在裏面。 如果您查看文檔https://docs.oracle.com/javase/7/docs/api/java/io/BufferedWriter.html你會看到以下內容:

write(String s, int off, int len) 
Writes a portion of a String. 

所以基本上你在做什麼是書面方式從字符數字符串s斷爲len-1的字符數。

我會建議(據我所知)也創建一個BufferedReader,讀取所有的文件,然後覆蓋現有的文件,每次檢查每行與一些循環和條件,然後寫入相應的值。 您可以改爲使用write(int c)方法,因爲您只寫0或1.

+0

我已經使用BufferedReader讀取我的文件,但我沒有想過用我的修改數組重寫所有文件(陣列)。謝謝,我會用你的建議! –