Java Language
新しいファイルI / O
サーチ…
構文
- Paths.get(String first、String ... more)// String要素でPathインスタンスを作成します。
- Paths.get(URI uri)// URIでパスインスタンスを作成します。
パスの作成
Path
クラスは、ファイルシステム内のパスをプログラマティカルに表現するために使用されます(したがって、存在しないファイルであってもファイルとディレクトリを指すことができます)
パスは、ヘルパークラスPaths
を使用して取得できます。
Path p1 = Paths.get("/var/www");
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt");
Path p4 = Paths.get("/home", "arthur", "files", "diary.tex");
パスに関する情報の取得
パスに関する情報は、 Path
オブジェクトのメソッドを使用して取得できます。
toString()
は、パスの文字列表現を返します。Path p1 = Paths.get("/var/www"); // p1.toString() returns "/var/www"
getFileName()
は、ファイル名(または、具体的には、パスの最後の要素Path p1 = Paths.get("/var/www"); // p1.getFileName() returns "www" Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getFileName() returns "HHGTDG.odt"
getNameCount()
は、パスを構成する要素の数を返します。Path p1 = Paths.get("/var/www"); // p1.getNameCount() returns 2
getName(int index)
れたインデックスにある要素を返します。Path p1 = Paths.get("/var/www"); // p1.getName(0) returns "var", p1.getName(1) returns "www"
getParent()
は、親ディレクトリのパスを返します。Path p1 = Paths.get("/var/www"); // p1.getParent().toString() returns "/var"
getRoot()
はパスのルートを返します。Path p1 = Paths.get("/var/www"); // p1.getRoot().toString() returns "/" Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getRoot().toString() returns "C:\\"
パスの操作
2つのパスに参加する
パスはresolve()
メソッドを使用して結合できます。渡されるパスは、ルート要素を含まないパスである部分パスでなければなりません。
Path p5 = Paths.get("/home/");
Path p6 = Paths.get("arthur/files");
Path joined = p5.resolve(p6);
Path otherJoined = p5.resolve("ford/files");
joined.toString() == "/home/arthur/files"
otherJoined.toString() == "/home/ford/files"
パスの正規化
パスには要素を含めることができます.
(あなたが現在入っているディレクトリを指しています)と..
(親ディレクトリを指しています)。
パスで使用される場合、 .
パスの宛先を変更することなく、いつでも除去することができ、 ..
直前の要素と一緒に除去することができます。
Paths APIでは、 .normalize()
メソッドを使用してこれを行い.normalize()
。
Path p7 = Paths.get("/home/./arthur/../ford/files");
Path p8 = Paths.get("C:\\Users\\.\\..\\Program Files");
p7.normalize().toString() == "/home/ford/files"
p8.normalize().toString() == "C:\\Program Files"
ファイルシステムを使った情報の取得
ファイルシステムと対話するには、クラスFiles
メソッドを使用しFiles
。
存在を確認する
パスが指すファイルまたはディレクトリの存在を確認するには、次の方法を使用します。
Files.exists(Path path)
そして
Files.notExists(Path path)
!Files.exists(path)
neccesarilyに等しくなるようにする必要はありませんFiles.notExists(path)
、三つの可能なシナリオがあるので:
- ファイルまたはディレクトリの存在が検証されます(
exists
はtrue
を返し、notExists
はこの場合false
を返します) - ファイルまたはディレクトリが存在しない(
exists
とfalse
を返し、notExists
がtrue
返す) - ファイルやディレクトリの有無は確認できません(アクセス制限など):
exists
とnonExists
両方exists
falseを返します。
パスがファイルまたはディレクトリを指しているかどうかを確認する
これは、 Files.isRegularFile(Path path)
Files.isDirectory(Path path)
とFiles.isRegularFile(Path path)
Files.isDirectory(Path path)
を使用して行われFiles.isRegularFile(Path path)
Path p1 = Paths.get("/var/www");
Path p2 = Paths.get("/home/testuser/File.txt");
Files.isDirectory(p1) == true
Files.isRegularFile(p1) == false
Files.isDirectory(p2) == false
Files.isRegularFile(p2) == true
プロパティの取得
これは、以下の方法を使用して行うことができます。
Files.isReadable(Path path)
Files.isWritable(Path path)
Files.isExecutable(Path path)
Files.isHidden(Path path)
Files.isSymbolicLink(Path path)
MIMEタイプの取得
Files.probeContentType(Path path)
これは、ファイルのMIMEタイプを取得しようとします。次のように、MIMEタイプStringを返します。
-
text/plain
ファイル用のtext/plain
- HTMLページの
text/html
- PDFファイルのための
application/pdf
- PNGファイル用の
image/png
ファイルの読み込み
ファイルは、 Files
クラスを使用してバイト単位および行単位で読み取ることができます。
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
byte[] content = Files.readAllBytes(p2);
List<String> linesOfContent = Files.readAllLines(p2);
Files.readAllLines()
オプションでパラメータとしてcharsetをとります(デフォルトはStandardCharsets.UTF_8
)。
List<String> linesOfContent = Files.readAllLines(p2, StandardCharsets.ISO_8859_1);
ファイルの書き込み
ファイルは、 Files
クラスを使用してバイトとラインで書くことができます
Path p2 = Paths.get("/home/testuser/File.txt");
List<String> lines = Arrays.asList(
new String[]{"First line", "Second line", "Third line"});
Files.write(p2, lines);
Files.write(Path path, byte[] bytes)
既存のファイルが上書きされ、存在しないファイルが作成されます。