-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

テキストファイルに文字を挿入することはできません。データを置き換える追加することしかできません。

つまり、から9に移動する場合は、のスペースを確保するために、1ステップ後にすべての文字を右に10シフトする必要があります。910

于 2012-05-22T11:57:02.783 に答える
1

質問に直接答えることはありませんがjava.lang.Properties、ファイルの管理に使用することを検討してください。

  • 単語は一意の値であり、プロパティ名(キー)として使用できます
  • 頻度カウントは、各単語に関連付けられる値です
  • Propertiesファイルの読み取りと書き込みの方法load()と方法store()
于 2012-05-22T12:00:40.147 に答える
0

最良の方法であるIMHOは、すべての読み取りと書き込みを処理するサードパーティAPIを使用することです。私のお気に入りはhttp://commons.apache.org/io/です 。FileUtilsクラスをチェックしてください。必要なメソッドがすべて含まれていると思います。

于 2012-05-22T11:58:44.097 に答える
0

増加する値を書き込むための十分なスペースを使用する場合は、次のようにいくつかの空白を埋めることで、ファイルの読み取り/書き込みを行うことができます。

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

ただし、事前に知っておくには上限が必要です。

バイナリ表現を使用して32ビットintを4バイトに格納することもできますが、そうすると、ファイルの人間による可読性が失われます。

あなたの問題の典型的な解決策は、そのような仕事のために作られたデータベースです-それは特大に見えるかもしれませんが、今日、利用可能な多くの小さなインメモリデータベースがあります。私が最後に使用したのは、数年前のhsqldbでした。

于 2012-05-22T12:09:02.683 に答える
0

使う

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

すべての単語数を保存します。次に、すべてのキーを好みの形式でファイルに簡単に保存できます

于 2012-05-22T12:28:52.447 に答える