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();
}
}
'Java' 카테고리의 다른 글
[JAVA] Java Stream (스트림) API (0) | 2020.12.31 |
---|---|
[JAVA] Java8 함수형 인터페이스 (Functional Interface) (0) | 2020.12.24 |
[JAVA] Java8 Lambda Expressions ( 람다식, 람다 표현식 ) (0) | 2020.12.23 |
[JAVA] Java GC ( Garbage Collection ) (0) | 2020.11.26 |
[JAVA] JVM Execution Engine (실행엔진) (0) | 2020.11.25 |