2017-09-01 10 views
0

JavaのIOとNIOについて学ぶのは初めてです。IOとJavaのNIOのパスとパス

そして私は

  • java.nio.file.Pathjava.nio.file.Pathsとの間の差であるのだろうか?
  • は、PathPathsの違いは?

ありがとうございます。

+0

[パス](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

+0

@Songsパッケージ名には十分注意してください。 「ストリームベースのio」または「java.io.file.Paths」クラスはありません。 「ブロックベースのio」転送を含む「新しいIO」は、 'java.nio.file.Paths'の下にあります。基本的に、「新しいIO」は、Javaにブロックベースの転送と堅牢なPathシステムの2つの機能を追加します。古い "java.io"システムは、主にString操作とFileコンセプト(ファイルが存在する必要がなく、ディレクトリになることができる)で構築されたPathシステムを持っています。 –

答えて

0

パスはパスを表すクラスです。あなたが通常既に持っているものは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などのユーティリティクラスが必要な理由は、番号の組み合わせであります因子の:

  1. Pathはインタフェースなので、そのコンストラクタの直接呼び出しは不可能です。それはコンストラクタがないので。
  2. Stringは最終クラスであり、ユーティリティクラスを作成するよりも代替として提示する方がおそらくもっと難しいクラスです。したがって、"/home/user/.config".toPath()はオブジェクト指向の有効なオブジェクト指向の方法かもしれませんが、レガシーコードはそれ以上の審議なしでそれを追加することを防ぎます。
  3. URIは、上記の圧力と同様の圧力をStringとしています。

NIO Pathクラスで追加したときに、コードをレビューしてコアJavaライブラリに統合したかったのです。ライブラリに追加する他の人を得ることは容易である

スタッフは、次のような特徴があります

  1. あなたは(設立ライブラリコール・インタフェースによって公開されている方法で、ライブラリの既存の部品を台無しにしませんこれを行うと、今度はプログラムを書き直す必要があるため、図書館のユーザーは混乱します。
  2. 彼らはgetPath(...)機能を持つようにStringURIを変更するアプローチを取った場合、彼らはその後、簡単にバックアウト計画(あなたが時間通りにお届けできないことがありますので、これは非常に重要です)

を持っていますコードをJava標準ライブラリに統合するのが困難になっていました。

+0

パスは 'utilities'の場合にセットです。あなたは' java.io.file.paths'を参照しますか? – Songs

+0

@Songs私は 'java.nio.file.Paths'を参照しています。"古い "io /ファイルパッケージの下にパスはありません。また、既存の図書館で働く際に必要となる圧力を知るための質問を更新しました。 –