-1

我有一个单词及其频率计数的文本文件。当我给出任何与文本文件中的单词匹配的单词时,我需要增加它的频率计数。如何更改文本文件中的值?如何在 Java 中执行此过程。请提出任何想法。提前致谢。

myfile.txt

word    4
self    5
defence 3
argue   7

当我给出“self”这个词时,在“myfile.txt”的同一个文本文件中,它需要覆盖为

word    4
self    6
defence 3
argue   7
4

5 回答 5

2

您不能在文本文件中插入字符,只能替换附加数据。

换句话说,如果您从910,您必须将所有字符9向右移动一步,以便为 . 腾出空间10

于 2012-05-22T11:57:02.783 回答
1

虽然不直接回答您java.lang.Properties的问题,但请考虑使用来管理文件:

  • 每个单词都是唯一的值,可以用作属性名称(键)
  • 频率计数是与每个单词关联的值
  • Propertieshasload()store()方法用于读取和写入文件
于 2012-05-22T12:00:40.147 回答
0

用一个

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

存储所有单词计数。然后,您可以轻松地将所有密钥以您喜欢的格式保存到文件中

于 2012-05-22T12:28:52.447 回答
0

您可以通过填写一些空白来读取/写入文件,如果您将使用足够的空间来写入增加的值,例如:

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

但是你需要一个上限才能提前知道。

您可以使用二进制表示并将 32 位整数存储在 4 个字节中,但是您将失去文件的人类可读性。

您的问题的典型解决方案是为此类工作而设计的数据库 - 它可能看起来过大,但今天,有许多小型内存数据库可用。我最后一次使用它是几年前的 hsqldb。

于 2012-05-22T12:09:02.683 回答
0

恕我直言,最好的方法是使用第三方 API 来处理所有的读写。我最喜欢的是http://commons.apache.org/io/ 查看 FileUtils 类。我认为它包含您需要的所有方法。

于 2012-05-22T11:58:44.097 回答