我有一个单词及其频率计数的文本文件。当我给出任何与文本文件中的单词匹配的单词时,我需要增加它的频率计数。如何更改文本文件中的值?如何在 Java 中执行此过程。请提出任何想法。提前致谢。
myfile.txt
word 4
self 5
defence 3
argue 7
当我给出“self”这个词时,在“myfile.txt”的同一个文本文件中,它需要覆盖为
word 4
self 6
defence 3
argue 7
我有一个单词及其频率计数的文本文件。当我给出任何与文本文件中的单词匹配的单词时,我需要增加它的频率计数。如何更改文本文件中的值?如何在 Java 中执行此过程。请提出任何想法。提前致谢。
myfile.txt
word 4
self 5
defence 3
argue 7
当我给出“self”这个词时,在“myfile.txt”的同一个文本文件中,它需要覆盖为
word 4
self 6
defence 3
argue 7
您不能在文本文件中插入字符,只能替换或附加数据。
换句话说,如果您从9
到10
,您必须将所有字符9
向右移动一步,以便为 . 腾出空间10
。
虽然不直接回答您java.lang.Properties
的问题,但请考虑使用来管理文件:
Properties
hasload()
和store()
方法用于读取和写入文件用一个
Map<String,Integer> words = new HashMap<String,Integer>();
存储所有单词计数。然后,您可以轻松地将所有密钥以您喜欢的格式保存到文件中
您可以通过填写一些空白来读取/写入文件,如果您将使用足够的空间来写入增加的值,例如:
word 4___
self 11__
defence 3___
argue 7___
但是你需要一个上限才能提前知道。
您可以使用二进制表示并将 32 位整数存储在 4 个字节中,但是您将失去文件的人类可读性。
您的问题的典型解决方案是为此类工作而设计的数据库 - 它可能看起来过大,但今天,有许多小型内存数据库可用。我最后一次使用它是几年前的 hsqldb。
恕我直言,最好的方法是使用第三方 API 来处理所有的读写。我最喜欢的是http://commons.apache.org/io/ 查看 FileUtils 类。我认为它包含您需要的所有方法。