2011-01-25 15 views
0

Webアプリケーションのユーザーは、CSVファイルを生成するプロセスを開始してFTPサーバーにアップロードすることができます(そして、別の部門がそこからファイルを読み込みます)。私はこれを最もうまく実装する方法を理解しようとしています。私はcommons net ftpの機能を使用します。 一時ファイルを作成し、FTP(Java webapp)を使用してアップロードします。

  • storeFileStream(リモートString)を

    • storeFile(、のInputStreamローカル文字列リモート)これは、すべてのCSVを生成するために、しばらく時間がかかることができ

    :これは、FTPサーバーにデータをアップロードする2つの方法を提供しています私は接続全体を開いたままにしておくこと(storeFileStream)が最良の方法ではないと思います。だからこそ、私は一時ファイルを生成し、ファイルを生成してから転送するしかありません。

    ウェブアプリケーションで一時ファイルを生成する最適な方法は何ですか? File.createTempFileを使用することは安全で推奨ですか?

  • 答えて

    1

    何千ものCSVファイルを同時に作成しない限り、アップロード時間は私の視点からは問題ありません。データベースは通常行ごとにデータを出力しますが、これが既にCSVファイルに必要なフォーマットである場合は、一時ファイルを使用しないことを強く推奨します。

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

    ところで、あなたは、変換がWebアプリケーションによって行われ、時間がかかることに言及しました。これは、デフォルトのWebクライアントにタイムアウトがあるため問題になる可能性があります。したがって、永続的なプロセスは、webappインターフェイスによってトリガされるだけのバックグラウンドスレッドによってうまく実行されるべきです。

    0

    createTempFileを使用しても問題ありません。新しいFile(tmpDir、UUID.randomUUID()。toString())も同様に実行できます。ちょうどはありませんを使用してくださいdeleteOnExit()、それはリークマスターです。自分のファイルを必ず削除してください。

    編集:データはメモリに保存されますので、どこにも保存しないでください。 java.io.ByteArrayInputSteamをラップし、InputStreamを持つメソッドを使用します。より洗練されたソリューション。

    関連する問題