SMALL

java.nio.file.Files 클래스는 Java 1.7 버전부터 제공되었다.

Files 클래스는 static 메서드로만 이루어져 있다.

제공되는 대부분의 메서드는 file, directory를 다룬다.

 

 

create

 

Files.createFile(file)

파일을 생성할 때 사용

만약, parent directory가 존재하진 않는다면 Exception이 발생한다

 

Files.createDirectory(path)

디렉토리를 생성할 때 사용

만약, parent directory가 존재하진 않는다면 Exception이 발생한다

 

Files.createDirectories(path)

디렉토리를 생성할 때 사용

위의 메서드들과 다르게 parent directory가 존재하지 않아도 동작한다

    public static void main(String[] args) {

        Path file = Paths.get("test.txt");
        Path path = Paths.get("dir");
        Path path2 = Paths.get("dir2/test");

        try {
            System.out.println(Files.createFile(file));
            Files.writeString(file, "ttttt");
            Files.delete(file);

            Path dirTest = Files.createDirectory(path);
            System.out.println(dirTest);
            System.out.println(Files.exists(dirTest));
            Files.delete(dirTest);

            Path dirTest2 = Files.createDirectories(path2);
            System.out.println(dirTest2);

            System.out.println(dirTest);
            System.out.println(Files.exists(dirTest));

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

 

walk

1.8 이상에서만 사용 가능

path 경로 및 하위 파일 및 디렉토리 탐색하여 Stream으로 반환

    public static void main(String[] args) {
    
        Path walkPath = Paths.get("src");
        try {
            Stream<Path> stream = Files.walk(walkPath);
            stream.filter(Files::isRegularFile).forEach(p -> System.out.println(p));
            
            Files.walk(walkPath).filter(Files::isDirectory)
                .forEach(p -> System.out.println(p));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Path 경로를 탐색하며 해당 경로에 존재하는 모든 Path를 반환하여

해당 Stream을 기반으로 Directory, File 등등 특정 정보를 추출할 수 있다

 

walkFileTree

파일 시스템 트리를 재귀적으로 순회하는 기능

FileVisitor 객체를 인자로 받는다

 

public class SimpleFileVisitor implements FileVisitor<Path> {

    @Override
    public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
        System.out.println("preVisit - " + dir.toString());
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
        System.out.println("visit - " + file.toString());
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
        System.out.println("visitFail - " + file.toString());
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
        System.out.println("postVisit - " + dir.toString());
        return FileVisitResult.CONTINUE;
    }

}

 

FileVisitor 메서드의 return 값으로 FileVisitResult를 반환하는데

FileVisitResult Enum의 각각의 값들을 알아보자.

 

    public static void main(String[] args) {
    
        Path walkPath = Paths.get("src");
        try {
            System.out.println("-- walk file tree --");
            Files.walkFileTree(walkPath, new SimpleFileVisitor());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
LIST

+ Recent posts