Java フォルダ操作のサンプル(存在/移動/削除他)

Javaのフォルダ操作のサンプルです。

確認環境
・Java 8

目次

仕様 Filesクラス
  Pathsクラス - getメソッド
フォルダ フォルダの存在確認(exists/notExists)
  フォルダをコピーする(copy)
  フォルダを移動する(move)
  フォルダ名を変更する(move)
  空フォルダを作成する(createDirectory)
  フォルダを削除する(deleteIfExists)
  作成日時と更新日時を取得

Filesクラス

Pathsクラス - getメソッド

1 public static Path get(URI uri)
2 public static Path get(String first,String... more)
  • Pathオブジェクトを返すメソッドです。
  • PathオブジェクトはFilesクラスのメソッドの引数に指定します。
  • 1は、引数にパスをセットします。
  • 2は、引数にパスとファイル名をセットします。
  • 以下はJava8 API仕様のPathsクラスのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/nio/file/Paths.html

フォルダの存在確認(exists/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)

フォルダをコピーするサンプルです。

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)

フォルダを移動するサンプルです。

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)

フォルダ名を変更するサンプルです。

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)

空フォルダを作成するサンプルです。

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)

フォルダを削除するサンプルです。

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の例外が発生します。

作成日時と更新日時を取得する

作成日時と更新日時を取得するサンプルです。

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で表示されるようにしています。

関連の記事

Java テキストファイルの読み書き(Filesクラス)
Java ファイル操作のサンプル(存在/移動/削除他)

△上に戻る