====== Java 7 Files ====== NIO. 2 에 파일 관련 각종 API가 추가되었다. 이전보다 더 쉽게 파일 관련 작업을 수행할 수 있다. [[http://download.oracle.com/javase/tutorial/essential/io/fileio.html|File I/O (Featuring NIO.2) (The Java™ Tutorials > Essential Classes > Basic I/O)]] 에서 자세히 볼 수 있으며 아래는 간단한 정리이다.. * [[http://www.javabeat.net/2012/06/creating-writing-reading-java-files-api-java-7/|Creating, Writing, Reading files using Java Files API of Java 7]] ===== Path ===== 파일의 경로는 [[http://download.oracle.com/javase/7/docs/api/java/nio/file/Path.html|java.nio.file.Path]] 인터페이스로 나타낸다. 기존의 [[http://download.oracle.com/javase/7/docs/api/java/io/File.html|java.io.File]]을 Path로 대체한다. Path 는 인터페이스이며 [[http://download.oracle.com/javase/7/docs/api/java/nio/file/Paths.html|Paths]] 혹은 [[http://download.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html|FileSystem]] 객체로부터 Path 객체를 생성할 수 있다. import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; Path path = Paths.get("C:\\Temp\\test.txt"); //혹은 FileSystem 객체로 부터... Path pathFromFS = FileSystems.getDefault().getPath("C:\\Temp\\test.txt"); System.out.println("Path exists == " + Files.exists(path)); ===== Files ===== [[http://download.oracle.com/javase/7/docs/api/java/nio/file/Files.html|Files]] 클래스는 파일의 복사/이동/삭제/스트림생성/각종 파일 속성 설정 등에 관련된 매우 쉬운 static 메소드를 수십여개 제공해주고 있다. [[http://www.java7developer.com/blog/?p=334|Manipulating Files in Java 7]]와 [[http://download.oracle.com/javase/tutorial/essential/io/fileio.html|File I/O (Featuring NIO.2) (The Java™ Tutorials > Essential Classes > Basic I/O)]]를 참조한다. [[http://www.javacodegeeks.com/2012/02/java-7-copy-and-move-files-and.html|Java 7: Copy and Move Files and Directories - Java Code Geeks]] [[http://docs.oracle.com/javase/tutorial/essential/io/notification.html|Watching a Directory for Changes (The Java™ Tutorials > Essential Classes > Basic I/O)]] ===== Directory 삭제 ===== * [[https://www.baeldung.com/java-delete-directory|Delete a Directory Recursively in Java | Baeldung]] public void whenDeletedWithNIO2WalkFileTree_thenIsGone() throws IOException { Path pathToBeDeleted = TEMP_DIRECTORY.resolve(DIRECTORY_NAME); Files.walkFileTree(pathToBeDeleted, new SimpleFileVisitor() { @Override public FileVisitResult postVisitDirectory( Path dir, IOException exc) throws IOException { Files.delete(dir); return FileVisitResult.CONTINUE; } @Override public FileVisitResult visitFile( Path file, BasicFileAttributes attrs) throws IOException { Files.delete(file); return FileVisitResult.CONTINUE; } }); assertFalse("Directory still exists", Files.exists(pathToBeDeleted)); }