JavaのIOとNIOについて学ぶのは初めてです。IOとJavaのNIOのパスとパス
そして私は
- が
java.nio.file.Path
とjava.nio.file.Paths
との間の差であるのだろうか? - は、
Path
とPaths
の違いは?
ありがとうございます。
JavaのIOとNIOについて学ぶのは初めてです。IOとJavaのNIOのパスとパス
そして私は
java.nio.file.Path
とjava.nio.file.Paths
との間の差であるのだろうか?Path
とPaths
の違いは?ありがとうございます。
パスはパスを表すクラスです。あなたが通常既に持っているものはPath
ですが、ここにあるメソッドが関係します。
パスは一連のユーティリティです。これらのユーティリティは、他のタイプの入力からPath
オブジェクトを生成します。ユーティリティは、Path
を事前に持つ必要はありません。これらは、一般的な、頻繁に使用されるコードの便利なラッパーで、切り取りと貼り付けの必要性を減らすためのものです。ここで
はPaths
の使用例である:ここで
/* I have a String, but need a Path */
Path path = Paths.get("/home/user/.config");
はPath
の使用例である:
/* I have a Path, but need a String */
String name = path.toString();
Paths
などのユーティリティクラスが必要な理由は、番号の組み合わせであります因子の:
Path
はインタフェースなので、そのコンストラクタの直接呼び出しは不可能です。それはコンストラクタがないので。String
は最終クラスであり、ユーティリティクラスを作成するよりも代替として提示する方がおそらくもっと難しいクラスです。したがって、"/home/user/.config".toPath()
はオブジェクト指向の有効なオブジェクト指向の方法かもしれませんが、レガシーコードはそれ以上の審議なしでそれを追加することを防ぎます。URI
は、上記の圧力と同様の圧力をString
としています。NIO Path
クラスで追加したときに、コードをレビューしてコアJavaライブラリに統合したかったのです。ライブラリに追加する他の人を得ることは容易である
スタッフは、次のような特徴があります
getPath(...)
機能を持つようにString
とURI
を変更するアプローチを取った場合、彼らはその後、簡単にバックアウト計画(あなたが時間通りにお届けできないことがありますので、これは非常に重要です)を持っていますコードをJava標準ライブラリに統合するのが困難になっていました。
パスは 'utilities'の場合にセットです。あなたは' java.io.file.paths'を参照しますか? – Songs
@Songs私は 'java.nio.file.Paths'を参照しています。"古い "io /ファイルパッケージの下にパスはありません。また、既存の図書館で働く際に必要となる圧力を知るための質問を更新しました。 –
[パス](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Path.html)および[パス](https://docs.oracle.com/) javase/8/docs/api/java/nio/file/Paths.html)。 – Kayaman
@Songsパッケージ名には十分注意してください。 「ストリームベースのio」または「java.io.file.Paths」クラスはありません。 「ブロックベースのio」転送を含む「新しいIO」は、 'java.nio.file.Paths'の下にあります。基本的に、「新しいIO」は、Javaにブロックベースの転送と堅牢なPathシステムの2つの機能を追加します。古い "java.io"システムは、主にString操作とFileコンセプト(ファイルが存在する必要がなく、ディレクトリになることができる)で構築されたPathシステムを持っています。 –