一部のファイルをネットワーク共有 (\\physicalfileserver\files\) に保存するエンタープライズ アプリケーションがあります。アプリケーションは、LAN 経由で接続された複数の物理サーバーに分散された複数のアプリケーション サーバー インスタンスにインストールされるため、ネットワーク共有を使用する必要があります。場合によっては、ネットワーク共有自体に特定のファイルのコピーを作成し、同じディレクトリ (同じネットワーク共有上) に別の名前で保存するか、新しいディレクトリ (同じネットワーク共有上) に保存する必要があります。ファイルのコピーを作成する最も効率的な方法は何ですか? ソース ファイルと宛先ファイルが同じサーバー上にあるため、ネットワーク上に IO トラフィックを作成したくありません。また、ファイルのコピーを作成するのにかかる時間も増加します。しかし、これは私がこれまで見てきたものからは難しいです。
- 入力ストリームでファイルを読み取り、別のパス/名前で出力ストリームを介してサーバーに書き戻します。
- Apache Commons の FileUtils.copyFile()。
- JAVA の NIO Channels ライブラリ (java.nio.channels.FileChannel.transferFrom())
ただし、それらはすべて、プログラムを実行しているサーバーにファイルをコピーしてから、データをネットワーク共有にコピーして戻すように見えますが、これは実際には必要ありません。
この状況を処理するための最良のアプローチとして、教祖は何を提案できますか? いくつかの制限により、JAVA 1.5/1.6 しか使用できませんが、より高い Java バージョンを使用する提案も受け付けています。
アプリケーションは Windows 2008 サーバーにインストールされ、ネットワーク共有も Windows 2008 サーバーに存在します。
ありがとう