簡體   English   中英

Java-覆蓋文件的特定部分

[英]Java - overwriting specific parts of a file

我想使用Java更新文本文件的特定部分。 我希望能夠瀏覽文件並選擇要更新的特定行,有點像數據庫中的行,例如給定文件:

ID Value
1  100
2  500
4  20

我想插入3並更新4,例如

ID Value
1  100
2  500
3  80
4  1000

有沒有辦法實現這個(看似)簡單的任務? 我知道您可以附加到文件,但是我對隨機訪問更感興趣

將文件加載到內存中,更改您的值,然后重新寫入文件

如果有一種方法可以在不加載文件的情況下將其插入文件,則我從未聽說過。 您必須先將其他數據移開。

除非您經常處理大文件,否則性能並不是太大的問題

我知道您可以附加到文件,但是我對隨機訪問更感興趣

您正在嘗試在文件中間插入和刪除字節。 你不能那樣做。 文件系統根本不支持(通常)。 您可以覆蓋特定的字節,但不能插入或刪除它們。

如果您的記錄是固定長度(以字節為單位),則可以使用隨機訪問來更新特定記錄,但事實並非如此。

您既可以將整個文件加載到內存中,也可以從原始文件中讀取,然后每行將舊數據或新數據寫入新文件中。

您可以使用Java中的隨機訪問文件來執行此操作,在其中可以使用可用方法放置當前的讀寫位置。 你可以在這里探索更多

正如前面的答案所言,不可能使用流來做到這一點。 您可以嘗試使用可以在文本文件中保存和修改的屬性(即鍵,值對)。 例如,您可以使用以下命令將新屬性添加到文件中

setProperty(String key, String value)

此方法添加一個新屬性,或者如果已經存在,則使用selectedn鍵修改該屬性的值。

顯然,新屬性被添加到文件的末尾,但是缺少排序對於性能而言不是問題,因為對文件的訪問是通過調用Hashtable方法的getProperty方法進行的。

有關示例,請參見本教程:

http://docs.oracle.com/javase/tutorial/essential/environment/properties.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM