Javaのfile.length()
とFiles.size()
の実装に違いはありますか? Java 7はFiles.size()
メソッドを導入しました。Java 7のFiles.size()実装
5
A
答えて
5
JDK 7のjava.nio.file.Files
クラスは、ファイルに対して動作する静的メソッドを提供するクラスです。
Files.size(String path)
メソッドは、java.nio.file.spi.FileSystemProvider
に基づいてファイルサイズを返します。 File.length()
とは関係ありません。これは実際に "接続されている"実際のファイルサイズを返します。
17
主な違いは、Files.size()
は「通常ファイル」でないもの(Files.isRegularFile()
で定義)を処理できることです。
この
はFileSystemProviders
あなたが利用できる持っているに応じて、... ZIPファイル内のファイルのサイズ、FTP/SFTP経由でアクセスしたファイルを処理できる可能性を得ることができることを意味
プレーン古いFile.length()
はそれを行うことはできません。 は、 "本物の"ファイル(つまり、基礎となるOSがファイルとしても扱うファイル)を扱います。
1
重要な違いは、何かがうまくいかない場合File.length()
は、単にので、私はそれゆえFiles.size()
を使用することをお勧めします0を返すながらFiles.size()
は、IOExceptionがスローということである:それは空のファイルとエラーを区別することはできません
- どちらの場合も0を返すため、
File.length()
で発生します。 - エラーが発生した場合は、
File.length()
でエラーの原因に関する情報は得られません。対照的に、Files.size()
からスローされたIOExceptionには、一般に、失敗の原因を示すメッセージが含まれます。
this answerで説明したようにFile.length()
のみご使用のオペレーティング・システムによって公開された「通常の」ファイルシステムと連携しながら、さらに、Files.size()
は、(例えば、ZIPまたはFTPファイルシステムの)任意のファイル・システム・プロバイダと連携することができます。
結論:一般的に、より新しいFiles
クラスのメソッドを、従来のFile
クラスよりも優先します。
関連する問題
- 1. Windows 7のワイヤレスアドホックメッシュネットワークの実装
- 2. Drupal 7 .10 hook_menu実装エラー
- 3. JavaでのJavaの実装
- 4. Javaジェネリックファクトリパターンの実装
- 5. javaのhash()実装
- 6. Javaコンパイラの実装
- 7. Java:ガウスブラーの実装
- 8. クイックユニオンJavaの実装
- 9. Javaリングの実装
- 10. Javaマージソートの実装
- 11. JavaのRFC2898DeriveBytes実装
- 12. Java RMIの実装
- 13. Java - サービスプロバイダの実装
- 14. Java OCRの実装
- 15. Java実装のキーリスト。
- 16. Javaハッシュシンボルテーブルの実装
- 17. Javaプリミティブの実装
- 18. Long.numberOfTrailingZerosのJava実装()
- 19. Java ESAPIの実装
- 20. セグメントツリーのJava実装
- 21. コンセンサスアルゴリズムのJava実装
- 22. Javaバブルソートアルゴリズムの実装
- 23. SAT Javaの実装
- 24. クロックプロキャッシュ - java実装
- 25. CircularArrayQueue実装Java
- 26. Tomcat 7でJava EE 7 WebSocketを実行
- 27. PSR-7の実装方法は?
- 28. Delphi 7:マルチスレッドの実装方法
- 29. REST RQL Java実装
- 30. Java実装はjava.lang.IllegalMonitorStateException