2011-06-14 14 views
0

基本上,我正在尋找添加到.txt文件,具體取決於是否已存在特定行。Java - 檢查所有行上現有文本的.txt

I.e.如果該行不存在,則將該行添加到.txt文件中。 不要將該行添加到.txt文件(如果存在)。

每一行獨自站在

例如

一個

兩個

,而不是 一,二,三等

我想使用的readLine(),但似乎它定義結束一個休息時間的線路,就像我的線路一樣。該方法不帶任何參數(例如行號),所以我非常簡短:/。

任何他

+0

你如何定義一個行的結束,除了休息? – Paul 2011-06-14 20:47:55

回答

0

您可以按照您的建議使用readLine()方法RandomAccessFile來讀取文件的每一行,查找預期的文本。

從Javadoc中的readLine():

文本行由 回車字符( '\ r'),一個 換行符( '\ n')終止,一個 立即返回字符 後跟一個換行符,或 該文件的結尾。

如果未找到預期的文本,則可以使用RandomAccessFile之一的寫入方法,例如, writeUTF()writeBytes()將文本行添加到文件中。

+0

但是如果我去使用readLine ()不會只是讀第一行,然後終止? – 2011-06-15 09:41:18

+0

記住:線路是這樣的: 一個 等。 據我所知,搜索停止時,只要有一個換行符。 如何指定哪一行使用readLine()?該方法不帶任何參數。 謝謝你的輸入:)。 – 2011-06-15 09:42:42

+0

啊... 我剛剛讀了你鏈接的javadoc ..似乎readLine()讀取下一行。這是否意味着每一次,無論在哪裏,只要它在同一個流中(例如它可以在流中的for循環中?),它會調用下一行? – 2011-06-15 10:34:43

0

基本上,你首先要掃描的話,你正在尋找的部分或全部,文件,然後附加詞,如果它不存在。

你可以使用readLine(),但是如果你不介意第三方lib中,你可以嘗試Guava

File theFile = ... 
String theWord = ... 

String text = Files.toString(theFile, "utf-8"); 
if (!text.contains(theWord)) { 
    Files.append(theWord, theFile, "utf-8") 
} 
+0

恐怕我不能在這種情況下使用第三方庫:/謝謝輸入 – 2011-06-15 09:40:39

+0

@Mike,方法仍然是一樣的,只是稍微詳細一點 – 2011-06-15 10:58:08

0

你爲什麼不使用循環和逐行讀取文本文件行?循環後,如果您沒有找到該行,請將其追加到文件的末尾。