簡體   English   中英

如何使用Java修改文件的某些內容並保存在同一文件中

[英]how to modify some of the contents of the file and save in the same file using java

我有一個單詞及其頻率計數的文本文件。 當我給出與文本文件中的單詞匹配的任何單詞時,則需要增加其頻率計數。 如何更改文本文件中的值? 如何在Java中執行此過程。 請提出任何想法。 提前致謝。

myfile.txt

word    4
self    5
defence 3
argue   7

當我給“自我”一詞時,則在“ myfile.txt”的相同文本文件中,它需要覆蓋為

word    4
self    6
defence 3
argue   7

您不能在文本文件中插入字符,只能替換附加數據。

換句話說,如果從去910 ,你必須對所有字符轉變之后的9一步向右,以騰出空間10

在不直接回答您的問題的同時,請考慮使用java.lang.Properties來管理文件:

  • 每個單詞都是唯一值,可以用作屬性名稱(鍵)
  • 頻率計數是與每個單詞關聯的值
  • Properties具有用於讀取和寫入文件的load()store()方法

最好的方法,恕我直言,是使用第三方API來處理所有讀寫操作。 我最喜歡的是http://commons.apache.org/io/查看類FileUtils。 我認為它包含您需要的所有方法。

如果您有足夠的空間來寫入遞增的值,可以通過填充一些空格來讀取/寫入文件,例如:

word    4___
self    11__
defence 3___
argue   7___

但是您需要一個上限才能提前知道。

您可以使用二進制表示形式,並以4個字節存儲32位int,但是那樣您將失去文件的可讀性。

解決此問題的典型解決方案是為此類工作而創建的數據庫-看起來可能過大,但是今天,有許多小型內存數據庫可用。 我上一次使用它是幾年前的hsqldb。

用一個

Map<String,Integer> words = new HashMap<String,Integer>();

存儲所有單詞數。 然后,您可以按照自己喜歡的格式輕松地將所有密鑰保存到文件中

暫無
暫無

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

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