0

私の Web アプリケーションのユーザーには、CSV ファイル (データベースからのいくつかのデータが入力されたもの) を生成し、それを FTP サーバーにアップロードするプロセスを開始するオプションがあります (別の部門がそこからファイルを読み取ります)。これを最適に実装する方法を見つけようとしています。私はcommons netftp機能を使用しています。FTP サーバーにデータをアップロードする方法は 2 つあります。

  • storeFile(String リモート、InputStream ローカル)
  • storeFileStream(文字列リモート)

すべての CSV データを生成するには時間がかかる場合があるため、接続を常に開いたままにしておくこと (storeFileStream) は最善の方法ではないと思います。そのため、一時ファイルを生成し、入力してから転送したいのです。

Web アプリケーションで一時ファイルを生成する最良の方法は何ですか? 安全で使用することをお勧めしますFile.createTempFileか?

4

2 に答える 2

2

何千もの CSV ファイルを同時に作成しない限り、アップロード時間は私の観点からは問題になりません。データベースは通常、データを行ごとに出力します。これが既に CSV ファイルに必要な形式である場合は、一時ファイルをまったく使用しないことを強くお勧めします。オンザフライで変換するだけです。

データベース データを行ごとに読み取り、それを CSV に変換し、その read() メソッドを介してデータを公開する InputStream 実装を作成します。

ところで: 変換は Web アプリケーションによって行われ、長い時間がかかる可能性があるとおっしゃいました。デフォルトの Web クライアントにはタイムアウトがあるため、これは問題になる可能性があります。したがって、長期的なプロセスは、webapp インターフェースによってのみトリガーされるバックグラウンド スレッドによって実行される方が適切です。

于 2011-01-25T16:51:04.933 に答える
0

createTempFile を使用しても問題ありません。 new File(tmpDir, UUID.randomUUID().toString()) も使用できます。deleteOnExit ()を使用しないでください。これはリークマスターです。必ず自分でファイルを削除してください。

編集:データはメモリに保存されるため、どこにも保存しないでください。java.io.ByteArrayInputSteam をラップし、InputStream でメソッドを使用します。はるかにきれいで優れたソリューション。

于 2011-01-25T17:31:25.253 に答える