パフォーマンス上のより良い選択肢は何ですか:fileinputstreamとfileoutputstreamを使用してファイルをコピーするか、JavaからOS固有のコマンドコピーコマンドを実行しますか?Javaでのファイルコピー
答えて
OS固有のコピーコマンドを使用すると、高速でも、少なくとも簡単な自己記述型ソリューションと同じくらい速くても大丈夫です。 OS特有のコマンドはおそらく、目立つバッファサイズや他の最適化を使用します。それ以外の場合は、自分自身を把握する必要があります。
編集:
x-xが正しいので、copyコマンドを直接呼び出すべきではありません。 Javaには既にFile.copy()などのコピーメソッドがあると思っていましたが、JDICでさえも何も見つかりませんでした。だからApache Commons IOはおそらく行く方法です。
これはまさにそれを行うmethodという優れたコモンズライブラリを使用しています。非常に広く使用されており、非常に最適化されていることが保証されています。
hereからダウンロードするか、mavenを使用している場合はPOM dependencyをpom.xmlファイルにコピーしてください。
OS固有のコピーではコピーしないでください。ポータブルではありません。 Javaの非Javaコードを使用すると、JNIを使用するか外部コマンドを生成するかは、頭痛とメンテナンスの悪夢です。
Javaで実行します。
OSコマンドを実行する際の1つの問題は、OSカーネルレベルで完全なプロセスを作成する必要があることです。これは重量のある操作です。小さなファイルには特に重大な固定オーバーヘッドがあります。
もう1つの問題は、正当な理由なしにシステム依存性を追加することです。
エラーが発生した場合の対処方法によって異なります。多くの場合、ネイティブコマンドはエラー状況を処理する能力が優れていますが、ユーザーと対話するのは難しい場合があります。
純粋なJavaソリューション(クロスプラットフォーム以外にも)によって、完全に制御することができます。ライブラリを使用して、面倒な詳細やエラー状況を処理することをお勧めします。
- 1. 不完全なファイルコピーJava NIO
- 2. ファイルコピーのPython
- 3. USB - 複数のファイルコピー
- 4. C#の実行ファイルコピー?
- 5. C#:ファイルコピー通知
- 6. Javaを使用した共有パスへのファイルコピー
- 7. Visual Studio、デプロイメントプロジェクトとファイルコピー
- 8. K&R本1.5.1ファイルコピー
- 9. F#非同期ファイルコピー
- 10. サブディレクトリへの再帰的ファイルコピー
- 11. C#のファイルコピー特別Forder
- 12. 単純なファイルコピーのための適切なJava Configは何ですか
- 13. TFS 2015とAzure VMsファイルコピー
- 14. Innoセットアップ条件付きファイルコピー
- 15. ファンクションテストでファイルコピーを模擬する方法
- 16. wxpythonのファイルコピーの進行状況バー
- 17. Azureデータファクトリ:宛先の再帰ファイルコピー名
- 18. HOW:Apache Camel、ルートタイミングの問題。クォーツ+ファイルコピー
- 19. データノードへのファイルコピー時のHadoop HDFSでのデータフローパイプライン
- 20. httpを使用するWindowsファイルコピー
- 21. クロスデータセンター:MySQLレプリケーションと単純なファイルコピー
- 22. getRuntime()を使用したファイルコピー。exec()
- 23. GThreadとファイルコピーに関する問題
- 24. Rubyのファイルコピーで別のファイルが生成される
- 25. ファイルコピー操作が別のスレッドで機能しませんか?
- 26. Windowsのデフォルトよりも優れたファイルコピーは何ですか?
- 27. 進捗状況を監視する最速のJavaファイルコピー方法は何ですか?
- 28. 並行ファイルコピー操作のためのPythonマルチプロセス/マルチスレッドの使用
- 29. ソースファイル名などのファイルコピー/ムーブイベントの詳細をキャッチする方法
- 30. 人形のマスターからエージェントへのファイルコピーが失敗します
ここでは、移植性が第一の関心事ではないと仮定して、このような方法の主な使用例は、要求処理の一部として多くのファイルをコピーすることになり、したがってパフォーマンスは非常にimp基準です。 – jjoshi
パフォーマンスが重要な基準であっても、ボトルネックはCPUではなくディスクになりますので、どの言語で行うかは問題になりません。 – flybywire
ファイルコピーを行うライブラリ!!!それはコードの約5行のために少し船外に行くのではないですか?それとも、最大のスループットのために、いくつかの難解なJava同時読み込み/書き込み呼び出しを使用していますか? –