サンプル | フォルダの存在確認(exists/notExists) |
フォルダをコピーする(copy) | |
フォルダを移動する(move) | |
フォルダ名を変更する(move) | |
空フォルダを作成する(createDirectory) | |
フォルダを削除する(deleteIfExists) | |
作成日時と更新日時を取得(readAttributes) | |
FilesクラスとPath.getとは |
(確認環境:Java8)
フォルダの存在確認(exists/notExists)
public static boolean exists(Path path,LinkOption... options) |
public static boolean notExists(Path path,LinkOption... options) |
Files.existsとFiles.notExistsで、フォルダの存在確認を行うサンプルです。
package test1;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Test1 {
public static void main(String[] args) {
Path path1 = Paths.get("D:\\Test3\\sub1");
if (Files.exists(path1)) {
System.out.println("存在します");
}
if (Files.notExists(path1)) {
System.out.println("存在しません");
}
}
}
11行目のexistsメソッドは、フォルダが存在している場合、trueを返します。
存在していない場合、falseを返します。
14行目のnotExistsメソッドは、フォルダが存在していない場合、trueを返します。
存在している場合、falseを返します。
フォルダをコピーする(copy)
public static Path copy(Path source,Path target,CopyOption... options) throws IOException |
Files.copyで、フォルダをコピーするサンプルです。
package test1;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Test1 {
public static void main(String[] args) {
Path from1 = Paths.get("D:\\Test3\\sub1");
Path to1 = Paths.get("D:\\Test4\\sub1");
try {
Files.copy(from1, to1);
} catch (IOException e) {
e.printStackTrace();
}
}
}
14行目は、Test3フォルダ配下のsub1フォルダをTest4フォルダ配下にコピーします。
コピー前に、D:\Test4\sub1が存在しているとエラーになります。
フォルダの中のフォルダとファイルはコピーされません。
フォルダを移動する(move)
public static Path move(Path source,Path target,CopyOption... options)throws IOException |
Files.moveで、フォルダを移動するサンプルです。
package test1;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Test1 {
public static void main(String[] args) {
Path from1 = Paths.get("D:\\Test3\\sub1");
Path to1 = Paths.get("D:\\Test4\\sub1");
try {
Files.move(from1, to1);
} catch (IOException e) {
e.printStackTrace();
}
}
}
14行目は、Test3フォルダ配下のsub1フォルダをTest4フォルダ配下に移動します。
移動前に、D:\Test4\sub1が存在しているとエラーになります。
フォルダの中のフォルダとファイルも移動します。
フォルダ名を変更する(move)
public static Path move(Path source,Path target,CopyOption... options)throws IOException |
Files.moveで、フォルダ名を変更するサンプルです。
package test1;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Test1 {
public static void main(String[] args) {
Path from1 = Paths.get("D:\\Test3\\sub1");
Path to1 = Paths.get("D:\\Test3\\sub100");
try {
Files.move(from1, to1);
} catch (IOException e) {
e.printStackTrace();
}
}
}
14行目は、Test3フォルダ配下のsub1フォルダをsub100というフォルダ名に変更しています。
空フォルダを作成する(createDirectory)
public static Path createDirectory(Path dir,FileAttribute<?>... attrs)throws IOException |
Files.createDirectoryで、空フォルダを作成するサンプルです。
package test1;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Test1 {
public static void main(String[] args) {
Path path1 = Paths.get("D:\\Test3\\sub2");
try {
if (!Files.isDirectory(path1)) {
Files.createDirectory(path1);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
13行目は、isDirectoryメソッドと否定(!)で指定のフォルダが存在していないことを確認しています。
14行目は、createDirectoryメソッドで指定のフォルダを作成しています。
フォルダを削除する(deleteIfExists)
public static boolean deleteIfExists(Path path) throws IOException |
Files.deleteIfExistsで、フォルダを削除するサンプルです。
package test1;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Test1 {
public static void main(String[] args) {
Path path1 = Paths.get("D:\\Test3\\sub2");
try {
Files.deleteIfExists(path1);
} catch (IOException e) {
e.printStackTrace();
}
}
}
13行目は、deleteIfExistsメソッドで指定のフォルダが存在しているか確認し、フォルダが存在するとき削除処理を行います。
フォルダの中にファイルが存在した場合、フォルダを削除できません。
java.nio.file.DirectoryNotEmptyExceptionの例外が発生します。
作成日時と更新日時を取得する(readAttributes)
public static <A extends BasicFileAttributes> A readAttributes(Path path,Class<A> type,LinkOption... options)throws IOException |
Files.readAttributesで、作成日時と更新日時を取得するサンプルです。
package test1;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test1 {
public static void main(String[] args) {
Path path1 = Paths.get("D:\\Test3\\sub1");
BasicFileAttributes ba1;
try {
ba1 = Files.readAttributes(path1, BasicFileAttributes.class);
System.out.println(ba1.creationTime()); //2019-11-16T09:05:46.417019Z
System.out.println(ba1.lastModifiedTime());//2019-11-16T09:12:56.74086Z
getFormat1(ba1);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void getFormat1(BasicFileAttributes ba1) {
FileTime time1 = ba1.creationTime();
FileTime time2 = ba1.lastModifiedTime();
String pattern1 = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat format1 = new SimpleDateFormat(pattern1);
String f1 = format1.format(new Date(time1.toMillis()));
String f2 = format1.format(new Date(time2.toMillis()));
System.out.println("作成日時 " + f1); //作成日時 2019-11-16 18:05:46
System.out.println("更新日時 " + f2); //更新日時 2019-11-16 18:12:56
}
}
13行目は、対象のフォルダです。
17行目は、FilesクラスのreadAttributesメソッドでファイルの属性を読み取ります。
18行目は、作成日時ですがフォーマットされていない状態です。
19行目も、更新日時ですがフォーマットされていない状態です。
25~34行目は、SimpleDateFormatクラスを使用してyyyy-MM-dd HH:mm:ssで表示されるようにしています。
FilesクラスとPath.getとは
Filesクラスとは
Filesクラスは、Java7で導入されました。
java.nio.file.FilesクラスでNIO.2とも呼ばれます(Oracleが呼んでいます)。
似た名前でFileクラス(java.io.File)がありますがそれとは別です。
https://docs.oracle.com/javase/tutorial/essential/io/fileio.html
Path.getとは
1 public static Path get(URI uri) |
2 public static Path get(String first,String... more) |
Path.getの引数は、ファイルのある場所(パス)とファイル名を指定します。
1の引数は、フォルダとファイルの1つになっています。
2の引数は、フォルダとファイルで分かれています。
1と2のどちらでも可です。
Path.getの戻り値は、Filesクラスのメソッドの引数になります。
上記サンプルコードのメソッドは、Java7で導入されたjava.nio.file.Filesクラスのメソッドです。NIO.2とも呼ばれます。
似た名前でFileクラス(java.io.File)がありますがそれとは別です。
関連の記事
Java テキストファイルの読み書き(Filesクラス)
Java ファイルの存在/移動/コピー/削除(Filesクラス)