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