1

テキストファイルの読み取り/書き込み用のj2meアプリケーションを作成しました

今読んでいるときに私は1行を読んでそれをサーバーに送ります。その後、テキストファイルからその行を削除したいと思います。

私はそれを行う方法を取得していません。いくつかの例では、元のファイルの内容を1つのオブジェクトにコピーし、その文字列をオブジェクトから削除してから、元のファイルを削除し、その新しいオブジェクトで新しいファイルを作成するという解決策を見つけました。

私はそれが良いアプローチだとは思いません。そうする他の方法はありますか?

編集:

実際の問題は、あるアプリケーションがテキストファイルにデータを書き込んでいて、別のアプリケーションが1行を読み取ってサーバーに送信し、その行を削除するようなものです。

今、私が新しいオブジェクトをコピーしてファイルを削除し、新しいオブジェクトで新しいファイルを書き込むようなアプローチをとると、1つの問題が見つかります

ファイルが削除された場合、最初のアプリケーションはそのファイルを見つけることができないため、1つのデータのみで新しいファイルを作成し、2番目のアプリケーションは新しいオブジェクトに基づいて新しいファイルを作成するため、データが失われます

編集:

私もRMSで同じことをしようとしましたが、その時点で両方のアプリケーションが同じRMSにアクセスしている場合、RMSファイル内のすべてのデータはクリアです。最初のアプリケーションは書き込み用にRMSを開き、2番目のアプリケーションは同期と削除用に開きます。しかし、両方がRMSを開いているときは、すべてのデータがクリアされます。

1つのアプリケーションからRMSファイルにロックを設定することは可能ですか?

4

3 に答える 3

4

いいえ、それがあなたのやり方です。

ファイルの先頭から行を削除することはできません。その行なしでファイルを書き直す必要があります。

(これはJavaに固有のものではないことに注意してください)

于 2011-04-18T05:26:48.703 に答える
1

レコードが挿入されると、そのファイルがバックグラウンドアプリケーションによって読み取られ、アプリケーションによって削除されるサーバーに送信されるため、特定のフォルダーに単一のレコードに対して単一のファイルを作成していました。

そのため、ファイルの読み取りと書き込みの同時実行の問題を解決します。

私はそれが良いアプローチではないことを知っていますが、他の良いアプローチは見つかりませんでした.

于 2011-04-23T06:20:28.250 に答える
0

ほとんどのファイル システムには、途中でデータを削除するメカニズムがありません。(j2me の場合は確かにそうです)。したがって、標準的な方法は新しいファイルを開くことです。古いファイルを不要な行があるところまでコピーし、それをスキップしてから残りのファイルをコピーします。私はそれがエレガントに聞こえないことを知っていますが、それはまさにそれです:)

于 2011-04-18T05:26:57.103 に答える