안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
파일과 디렉토리 =>
IO는 파일의 속성 정보를 읽기 위해 File 클래스를 제공합니다.
NIO는 좀 더 다양한 파일의 속성 정보를 제공해주는 클래스, 인터페이스를
java.nio.File, java.nio.file.attribute 패키지에서 제공합니다.
경로정의 :
Path 는 IO 의 java.io.File클래스에 대응되는 NIO 인터페이스입니다.
NIO 의 API에서 파일의 경로를 지정하기 위해 Path를 사용하기 때문에 Path의 사용법을 알아야합니다.
Path 구현 객체는 java.nio.file.Paths 클래스의 get() 정적 메소드를 호출하여 얻습니다.
Path path = Paths.get(String first, String... more)
Path path = Paths.get(URI uri);
get() 의 매개값은 파일의 경로입니다. 문자열로 지정할 수도 있고, URI 객체로 지정할 수도 있습니다.
문자열의 경우면 전체 경로를 한꺼번에 지정하거나 상위 디렉토리와 하위 디렉토리로 나열해도 됩니다.
예)
"C:\Temp\dir\file.txt"의 경로를 이용해 Path를 얻는 방법 Path path = Paths.get("C:\Temp\dir\file.txt"); Path path = Paths.get("C:\Temp\dir", "file.txt"); Path path = Paths.get("C:","Temp","dir", "file.txt"); |
파일의 경로는 절대 경로와 상대 경로를 사용할 수 있습니다.
Path 인터페이스에는 파일 경로를 얻을 수 있는 여러 정보를 제공해주는 메소드가 있습니다,
예제)
import java.nio.file.Path; import java.nio.file.Paths; import java.util.Iterator; public class Example { public static void main(String[] args) throws Exception { Path path = Paths.get("디렉토리 경로/PathExample.java"); System.out.println("[[파일명]] " + path.getFileName()); System.out.println("[[부모 디렉토리명]]: " + path.getParent().getFileName()); System.out.println("중첩 경로 수: " + path.getNameCount());
System.out.println(); for(int i=0; i<path.getNameCount(); i++) { System.out.println(path.getName(i)); }
System.out.println(); Iterator<Path> iterator = path.iterator(); while(iterator.hasNext()) { Path temp = iterator.next(); System.out.println(temp.getFileName()); } } } |
파일 시스템 정보 :
FileSystem 인터페이스를 통해 운영체제의 파일 시스템에 접근할 수 있습니다.
FileSystem 구현 객체는 FileSystems 의 getDefault() 정적 메소드를 통해 얻을 수 있습니다.
FileSystem fileSystem = FileSystems.getDefault();
예제)
import java.nio.file.FileStore; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Path; public class Example { public static void main(String[] args) throws Exception { FileSystem fileSystem = FileSystems.getDefault(); for(FileStore store : fileSystem.getFileStores()) { System.out.println("[[드라이버명]]: " + store.name()); System.out.println("[[파일시스템]]: " + store.type()); System.out.println("[[전체 공간]]: \t\t" + store.getTotalSpace() + " 바이트"); System.out.println("[[사용 중인 공간]]: \t" + (store.getTotalSpace() - store.getUnallocatedSpace()) + " 바이트"); System.out.println("[[사용 가능한 공간]]: \t" + store.getUsableSpace() + " 바이트"); System.out.println(); }
System.out.println("[[파일 구분자]]: " + fileSystem.getSeparator()); System.out.println();
for(Path path : fileSystem.getRootDirectories()) { System.out.println(path.toString()); } }
} |
파일의 속성 읽기, 파일과 디렉토리 생성과 삭제
java.nio.file.Files 클래스에서는 파일과 디렉토리 생성과 삭제, 이 속성들을 읽는 메소드를 제공합니다.
속성이란 => 파일이나 디렉토리가 숨김인지, 디렉토리인지, 크기가 어떻게 되는지, 소유자가 누구인지에
대한 정보입니다.
java.nio.file.Files 클래스가 제공하는 정적메소드들입니다.
http://docs.oracle.com/javase/8/docs/api/
위 사이트에 들어가셔서 API 도큐먼트를 보시고 참고하시면 되겠습니다.
예제) 파일 속성 읽기
import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Example { public static void main(String[] args) throws Exception { Path path = Paths.get("src/sec02/exam03_file_directory/FileExample.java"); System.out.println("[[디렉토리 여부]]: " + Files.isDirectory(path)); System.out.println("[[파일 여부]]: " + Files.isRegularFile(path)); System.out.println("[[마지막 수정 시간]]: " + Files.getLastModifiedTime(path)); System.out.println("[[파일 크기]]: " + Files.size(path)); System.out.println("[[소유자]]: " + Files.getOwner(path).getName()); System.out.println("[[숨김 파일 여부]]: " + Files.isHidden(path)); System.out.println("[[읽기 가능 여부]]: " + Files.isReadable(path)); System.out.println("[[쓰기 가능 여부]]: " + Files.isWritable(path)); } } |
예제2) 디렉토리 및 파일 생성, 디렉토리 내용 출력
import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Example { public static void main(String[] args) throws Exception { Path path1 = Paths.get("C:/Temp/dir/subdir"); Path path2 = Paths.get("C:/Temp/file.txt"); if(Files.notExists(path1)) { Files.createDirectories(path1); } if(Files.notExists(path2)) { Files.createFile(path2); } Path path3 = Paths.get("C:/Temp"); // 디렉토리와 파일이 생성될 장소 DirectoryStream<Path> directoryStream = Files.newDirectoryStream(path3); for(Path path : directoryStream) { if(Files.isDirectory(path)) { System.out.println("[[디렉토리]] " + path.getFileName()); } else { System.out.println("[[파일]] " + path.getFileName() + " (크기:" + Files.size(path) + ")"); } } } } |
이상입니다.
'자바' 카테고리의 다른 글
자바 NIO 버퍼 - Buffer 의 종류, Buffer 생성 버퍼 생성, 버퍼 위치 속성 (0) | 2017.04.16 |
---|---|
자바 NIO 파일과 디렉토리 - WatchService 와치 서비스 (0) | 2017.04.16 |
자바 IO 와 NIO 의 차이점과 선택 (0) | 2017.04.14 |
자바 UDP 네트워킹 - 발신자와 수신자 (0) | 2017.04.13 |
자바 Socket 채팅 클라이언트 만들기 (0) | 2017.04.13 |