我想用Java更新文本文件的特定部分。我希望能夠通過文件掃描並選擇特定的線路進行更新,有點像在一個數據庫中,例如指定的文件:Java - 覆蓋文件的特定部分
ID Value
1 100
2 500
4 20
我想插入3和更新4,如
ID Value
1 100
2 500
3 80
4 1000
有沒有辦法實現這個(看似)簡單的任務?我知道你可以追加到一個文件,但我更感興趣的是隨機存取
我想用Java更新文本文件的特定部分。我希望能夠通過文件掃描並選擇特定的線路進行更新,有點像在一個數據庫中,例如指定的文件:Java - 覆蓋文件的特定部分
ID Value
1 100
2 500
4 20
我想插入3和更新4,如
ID Value
1 100
2 500
3 80
4 1000
有沒有辦法實現這個(看似)簡單的任務?我知道你可以追加到一個文件,但我更感興趣的是隨機存取
我知道你可以追加到一個文件中,但我更感興趣的是隨機存取
您試圖插入和刪除文件中間的字節。你不能那樣做。文件系統根本不支持(通常)。您可以覆蓋特定字節,但不能插入或刪除它們。
你可以更新的具體記錄與隨機存取如果您記錄進行了固定長度(以字節爲單位),但看起來事實並非如此。
您可以將整個文件加載到內存中,也可以從原始文件中讀取,根據每行數據適當地寫入舊數據或新數據。
將文件加載到內存中,改變你的價值,然後重新寫文件
,如果有要插入的方式沒有加載它的文件,我沒有聽說過它。您必須首先將其他數據移出。
,除非你正在處理大文件,通常情況下,性能是不是一個太大的關注
正如前面的答案所說,這是不可能做到使用流的symply。您可以嘗試使用屬性,它們是可以在文本文件中保存和修改的關鍵值對。 例如,您可以添加到文件的新屬性與命令
setProperty(String key, String value)
這種方法增加了一個新的屬性,或者,如果已經存在,修改與已選定的鍵的屬性的值。
顯然,在文件的末尾添加了新屬性,但缺乏排序並不是性能問題,因爲使用調用Hashtable方法的getProperty方法訪問文件。
請參見本教程的一些例子:
http://docs.oracle.com/javase/tutorial/essential/environment/properties.html
我會建議它,因爲沒人會:)繼續前進,並得到一個適當的數據庫。 – Randy