Java Language
새 파일 I / O
수색…
통사론
- Paths.get (String first, String ... more) // String 요소로 Path 인스턴스를 만듭니다.
- Paths.get (URI uri) // URI로 Path 인스턴스를 생성합니다.
경로 만들기
Path
클래스는 프로그래밍 방식으로 파일 시스템의 경로를 나타 내기 위해 사용됩니다 (따라서 파일과 디렉토리뿐만 아니라 존재하지 않는 파일까지도 가리킬 수 있습니다)
경로는 도우미 클래스 Paths
사용하여 얻을 수 있습니다.
Path p1 = Paths.get("/var/www");
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt");
Path p4 = Paths.get("/home", "arthur", "files", "diary.tex");
경로에 대한 정보 검색
패스에 관한 정보는, Path
오브젝트의 메소드를 사용해 취득 할 수 있습니다.
toString()
은 패스의 캐릭터toString()
표현을 돌려줍니다.Path p1 = Paths.get("/var/www"); // p1.toString() returns "/var/www"
getFileName()
은 파일 이름 (또는 더 구체적으로 경로의 마지막 요소getFileName()
반환합니다.Path p1 = Paths.get("/var/www"); // p1.getFileName() returns "www" Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getFileName() returns "HHGTDG.odt"
getNameCount()
는 패스를 구성하는 요소의 수를 반환합니다.Path p1 = Paths.get("/var/www"); // p1.getNameCount() returns 2
getName(int index)
지정된 인덱스에있는 요소를 리턴합니다.Path p1 = Paths.get("/var/www"); // p1.getName(0) returns "var", p1.getName(1) returns "www"
getParent()
는 부모 디렉토리의 경로를 리턴한다.Path p1 = Paths.get("/var/www"); // p1.getParent().toString() returns "/var"
getRoot()
는 경로의 루트를 반환합니다.Path p1 = Paths.get("/var/www"); // p1.getRoot().toString() returns "/" Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getRoot().toString() returns "C:\\"
경로 조작
두 경로 합류
경로는 resolve()
메소드를 사용하여 조인 할 수 있습니다. 전달 된 경로는 루트 요소를 포함하지 않는 경로 인 부분 경로 여야합니다.
Path p5 = Paths.get("/home/");
Path p6 = Paths.get("arthur/files");
Path joined = p5.resolve(p6);
Path otherJoined = p5.resolve("ford/files");
joined.toString() == "/home/arthur/files"
otherJoined.toString() == "/home/ford/files"
경로 정규화
경로에는 요소가 포함될 수 있습니다 .
(당신이 현재있는 디렉토리를 가리킴)과 ..
(부모 디렉토리를 가리킴).
경로에서 사용될 때, .
경로의 대상을 변경하지 않고 언제든지 제거 할 수 있으며 ..
이전 요소와 함께 제거 할 수 있습니다.
Paths API를 사용하면 .normalize()
메소드를 사용하여 수행 할 수 있습니다.
Path p7 = Paths.get("/home/./arthur/../ford/files");
Path p8 = Paths.get("C:\\Users\\.\\..\\Program Files");
p7.normalize().toString() == "/home/ford/files"
p8.normalize().toString() == "C:\\Program Files"
파일 시스템을 사용하여 정보 검색하기
파일 시스템과 상호 작용하려면 Files
클래스의 메소드를 사용하십시오.
존재 확인하기
경로가 가리키는 파일 또는 디렉토리의 존재를 확인하려면 다음 방법을 사용하십시오.
Files.exists(Path path)
과
Files.notExists(Path path)
!Files.exists(path)
는 반드시 Files.notExists(path)
와 같을 필요는 없습니다. 왜냐하면 세 가지 가능한 시나리오가 있기 때문입니다.
- 파일의 또는 디렉토리의 존재가 확인 (
exists
수익을true
과notExists
반환false
이 경우) - 파일 또는 디렉토리가 존재하지
false
(exists
는false
반환하고notExists
는true
반환 함) - 파일이나 디렉토리의 존재 여부는 확인할 수 없습니다 (예 : 액세스 제한으로 인해) :
exists
와nonExists
모두 false를 반환합니다.
경로가 파일 또는 디렉토리를 가리키는 지 확인
이것은 Files.isDirectory(Path path)
및 Files.isRegularFile(Path path)
사용하여 수행됩니다.
Path p1 = Paths.get("/var/www");
Path p2 = Paths.get("/home/testuser/File.txt");
Files.isDirectory(p1) == true
Files.isRegularFile(p1) == false
Files.isDirectory(p2) == false
Files.isRegularFile(p2) == true
속성 가져 오기
다음 방법을 사용하여이를 수행 할 수 있습니다.
Files.isReadable(Path path)
Files.isWritable(Path path)
Files.isExecutable(Path path)
Files.isHidden(Path path)
Files.isSymbolicLink(Path path)
MIME 유형 가져 오기
Files.probeContentType(Path path)
이렇게하면 파일의 MIME 형식을 가져 오려고 시도합니다. 다음과 같이 MIME 유형 문자열을 반환합니다.
-
text/plain
파일의 경우text/plain
- HTML 페이지의
text/html
- PDF 파일을위한
application/pdf
- PNG 파일 용
image/png
파일 읽기
파일은 Files
클래스를 사용하여 바이트 단위 및 줄 단위로 읽을 수 있습니다.
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
byte[] content = Files.readAllBytes(p2);
List<String> linesOfContent = Files.readAllLines(p2);
Files.readAllLines()
선택적으로 charset을 매개 변수로 사용합니다 (기본값은 StandardCharsets.UTF_8
임).
List<String> linesOfContent = Files.readAllLines(p2, StandardCharsets.ISO_8859_1);
파일 쓰기
파일 bite- 작성 및 라인 현명한 사용 할 수 있습니다 Files
클래스를
Path p2 = Paths.get("/home/testuser/File.txt");
List<String> lines = Arrays.asList(
new String[]{"First line", "Second line", "Third line"});
Files.write(p2, lines);
Files.write(Path path, byte[] bytes)
기존 파일을 덮어 쓰면 존재하지 않는 파일이 생성됩니다.