-2

実行時にプログラムが新しいエントリを書き込んだり、既存のエントリを編集できるようにする、txt ベースのデータベース ファイルを維持する最も簡単な方法は何ですか。

具体的には、プログラムは、リンクリストのような「内部」アプローチを使用せずに、ログイン時にクライアント、IP、およびポートを保存し、クライアントがログアウトするときにそれに応じて削除できる必要があります。

編集:最初に提案に感謝しますが、ファイルには言及するのを忘れていた制限があります。ファイルは .txt 形式でなければなりません。

正確な形式は

ユーザー名 IP アドレス ポート番号

アリス 122.33.44.23 1045

ボブ 121.23.12.34 1078

で区切らなければならない異なるフィールド

4

8 に答える 8

2

最も簡単な方法は、何らかのデータベースで管理することです。ファイル形式の要件を指定していませんが、CSV テキスト形式を選択するのは明らかです。

特に H2 データベースは、CSV テーブルをサポートしています。

于 2009-04-20T16:11:41.427 に答える
2

他の何人かのポスターが示唆しているようにデータベースをインストールすると、トランザクションのセキュリティや、保存するものを拡張する可能性など、特定のものを購入できます (現時点では、IP/ポートだけが必要ですが、後でもっと多くのものを保存する可能性があります。もっと永続的に?)

ただし、要件があなたが述べたように単純なままである場合は、SQLデータベースを使用することは最も単純なソリューションではないことを物議を醸すように提案します(ただし、私が言うように、特定の要件についてはデータベースが購入しますあなたは特定のもの)。

非常に単純な解決策は、クライアントがログインするたびに、必要な情報 (または識別情報のハッシュをエンコードし、追加情報をファイルに保存する) を名前にエンコードしたファイルを作成するディレクトリを作成することです。次に、クライアントがログオフするときに、ファイルを削除します。注意が必要な問題には、アプリが異常終了した場合に何が起こるかが含まれます。たとえば、クライアントが数千を超える場合は、複数のディレクトリに分割されます (特に Windows は、ファイルが多すぎる場合に発生するようです)。ディレクトリ、たとえ原則として好きなだけ保存できるはずです)、ファイルシステムの「問題」の管理(削除する必要があるときにウイルスチェッカーがファイルにアクセスしています...)。

この単純な解決策は、思ったほど悪くはありません。ファイリング システムは、データベースと同じように、物事に効率的にアクセスしてインデックスを作成するように設計されています。

于 2009-04-20T13:40:48.013 に答える
2

JSONYaml 、またはSQLiteなどの軽量 (ファイルベースだが人間が判読できない) データベースなどのデータシリアル化メソッドを検討することをお勧めします。

于 2009-04-20T12:51:20.177 に答える
1

私はJAXBを使用して、適度なサイズのデータ​​構造 (リストなど) を XML ファイルとの間でシリアライズしました。利点:

  • JAXB は Java SE 6 の一部であり、追加のライブラリは必要ありません。
  • (デ) シリアル化には、約 2 行のコードが必要です。
  • XML は人間が判読できます。

もちろん、実際のデータベースに取って代わるものではありません。たとえば、データを変更すると、ファイル全体を書き直す必要がありますが、小さなファイルの場合は問題ありません。シンプルさが必要な場合もあります。

于 2009-04-20T13:25:34.197 に答える
0

JDBC-ODBC ブリッジ ドライバを使用して、テキスト ベースの ODBC 接続にリンクできます。

その後、JDBC を使用して、ファイルのエントリを選択、挿入、更新、または削除できます。

しかし、それでも機能しますが、HSQLSQLiteまたはその他の軽量データベースを使用することをお勧めします。より高速で信頼性が高くなります。

幸運を。

于 2009-04-20T12:52:19.753 に答える
0

JavaDBをお勧めします。組み込みサポートやモバイル サポートなど、多くの機能を利用できます。

于 2009-04-20T13:24:24.370 に答える
0

Java ではありませんが、MySQL は CSV テーブル タイプをサポートしています。 http://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html

MySQL は、ロックや複数アクセスなどの難しい処理をすべて処理しますが、MySQL なしで直接読み取ることができるファイルが残ります。

于 2009-04-20T13:13:43.243 に答える