chapter 10. 기억해야 하는 중요한 사항
10.1 java.io.File을 이용한 코드 리팩토링
File.toPath() 사용하여 Path 객체로 변환하기
JavaDoc 설명
|
java.io.File
|
java.nio.file.Path
|
장
|
클래스 이름 대응 관계
|
java.io.File
|
java.io.file.Path
|
1장
|
경로이름과 객체의 동등성을 테스트 한다.
|
File.equals(Object)
|
Path.equals(Object)
|
1장
|
두 경로 이름을 사전순으로 비교한다.
|
File.compareTo(File)
|
Path.compareTo(Path)
|
1장
|
경로명에 대한 절대 경로명을 문자열로 반환한다.
|
File.getAbsolutePath()
|
Path.toAbsolutePath()
|
1장
|
경로명을 절대 경로 형식으로 반환한다.
|
File.getAbsoluteFile()
|
Path.toAbsolutePath()
|
1장
|
경로명을 표준 형식 문자열로 반환한다.(정규화)
|
File.getCanonicalPath(0
|
Path.toRealPath(LinkOption…)
Path.normalize()
|
1장
|
경로명을 표준 형식으로 반환한다.
|
File.getCanonicalFile()
|
Path.toRealPath(LinkOption…)
Path.normalize()
|
1장
|
경로명을 나타내는 URI를 생성한다.
|
File.toURI()
|
Path.toUri()
|
1장
|
일반 파일인지 테스트한다.
|
File.isFile()
|
Files.isRegularFile(Path,LinkOption…)
|
4장
|
디렉토리 인지 여부
|
File.isDirectory()
|
Files.isDirectory(Path,LinkOption…)
|
4장
|
숨김 파일 여부
|
File.isHidden()
|
Files.isHidden(Path)
|
4장
|
읽은 수 있는지
|
File.canRead()
|
Files.isReadable(Path)
|
4장
|
수정 가능 한지
|
File.canWrite()
|
Files.isWritable(Path)
|
4장
|
실행 가능 한지
|
File.canExecute()
|
Files.isExecutable(Path)
|
4장
|
실제 존재 여부
|
File.exist()
|
Files.exists(Path,LinkOption…)
Files.notExists(Path,LinkOption…)
|
4장
|
디렉토리 생성
|
File.mkdir()
|
Files.createDirectory(Path,FileAttribute<?>...)
|
4장
|
패스 있는 디렉토리 모두 생성
|
File.mkdirs)
|
Files.createDirectories(Path,FileAttribute<?>...)
|
4장
|
파일이 존재 않을 때만 생성
|
File.createNewFile()
|
Files.createFile(Path,FileAttribute<?>...)
|
4장
|
하위 목록들을 반환한다.(문자열 배열로)
|
File.list()
File.listFiles()
|
Files.newDirectoryStream(Path)
|
4장
|
하위 목록들을 반환(필터 적용)
|
File.list(FilenameFilter)
File.listFiles(FileFilter)
File.listFiles(FileNameFilter)
|
Files.newDirectoryStream(Path, DirectoryStream.Filter<? super Path>)
Files.newDirectoryStream(Path,String)
|
4장
|
파일 크기
|
File.length()
|
Files.size(Path)
|
4장
|
파일 삭제
|
File.delete()
|
Files.delete(Path)
Files.deleteIfExists(Path)
|
4장
|
파일 이름 변경
|
File.renameTo(File)
|
Files.move(Path,Path,CopyOption)
|
4장
|
실행 권한으로 설정
|
File.setExecutable(boolean,boolean)
|
Files.setAttribute(Path,String,Object,LinkOption…)
|
2장
|
읽기 권한으로 설정
|
File.setReadable(boolean,boolean)
|
Files.setAttribute(Path,String,Object,LinkOption…)
|
2장
|
읽기 전용으로 설정
|
File.setReadOnly()
|
Files.setAttribute(Path,String,Object,LinkOption…)
|
2장
|
쓰기 권한으로 설정
|
File.setWritable(boolean,boolean)
|
Files.setAttribute(Path,String,Object,LinkOption…)
|
2장
|
파일 수정일 얻기
|
File.lastModified()
|
Files.getLastModifiedTime(Path,LinkOption...)
|
2장
|
파일 수정일 변경
|
File.setLastModified(long)
|
Files.setLastModified(Path,FileTime)
|
2장
|
임시 파일 디렉토리에 임시 파일 생성(접두어 사용)
|
File.createTempFile(String,String)
|
File.createTempFile(String prefix,String suffix,FileAttribute<?>...attrs)
|
4장
|
지정된 디렉토리에 임시 파일 생성
|
File.createTempFile(String,String,File)
|
File.createTempFile(Path dir,String prefix,String suffix,FileAttribute<?>...attrs)
|
4장
|
파티션의 크기를 반환
|
File.getTotalSpace()
|
FileStore.getTotalSpace()
|
2장
|
파티션의 여유 공간 반환
|
File.getFreeSpace()
|
FileStore.getUnallocatedSpace(0
|
2장
|
파티션의 가상머신이 이용할 수는 바이트 수 반환(free보다 usable 사용)
|
File.getUsableSpace()
|
FileStore.getUsableSpace()
|
2장
|
파일시스템 루트 나열
|
File.listRoots()
|
FileSystem.getRootDirectories()
|
4장
|
임의 접근 파일
|
java.io.RandomAccessFile
|
java.nio.channels.SeekableByteChannel
|
7장
|
가상 머신 종료시 경로명에 파일 삭제 하기
|
File.deleteOnExit()
|
DELETE_ON_CLOSE 옵션으로 대체
|
4장
|
두 경로를 조합하기
|
new File(parent,”new_file”)
|
parent.resolve(“new_file”)
|
1장
|
10.2 ZIP 파일시스템 제공자로 작업하기
ZFSP (ZIP 파일 시스템)
ZIP 파일 시스템의 설정 가능 속성
- create : true | false를 지정 하지만 (문자열임) 값이 true 이면 ZFSP는 파일이 없을 때 새 ZIP 파일을 생성한다.
- encoding : 인코딩 스킴을 가르키는 문자열 값 (UTF-8,US-ASCII,ISO-8859-1) 기본값은 UTF-8
10.3 사용자 지정 파일시스템 제공자 개발 시에 고려할 사항
관련 클래스 java.nio.file.spi.FileSystemProvider, 사용자 지정 파일 시스템 제공자는 java.nio.file.FileSystem 인스턴스를 위해 이 클래스를 팩토리로 구현한다. URI 스킴으로 식별하고자 한다면 URI 스킴을 갖고 있어야 함.
10.3.1 사용자 지정 파일시스템 제공자 클래스 생성하기
생성 단계
- java.nio.file.spi.FileSystemProvider 클래스를 상속
- 제공자를 위한 URI 스킴을 정의 한다.(getScheme() 메소드가 이 URI 스킴을 반환해야 한다.)
- 제공자의 생성된 파일시스템을 관리하는 내부 캐시를 생성한다.
- 파일시스템 생성과 기존 파일시스템의 참조를 가져오는 newFileSystem()과 getFileSystem() 메소드를 구현한다.
- newFileChannel() 또는 newAsyncronousFileChannel() 메소드를 구현한다.이들 메서드는 파일시스템에서 파일을 읽거나 쓸 수 있는 FileChannel 객체를 반환한다.
10.3.2 사용자 지정 파일시스템 클래스 생성하기
생성 단계
- java.nio.file.FileSystem 클래스를 상속
- 자신의 용도에 따라 파일 시스템의 메소드를 구현한다.(루트의 개수, 읽기/쓰기 접근,파일 저장소 등을 정의해야 한다>)
10.4 유용한 메서드
경로 문자열 구분자 얻기
- File.separator
- FileSystems.getDefault().getSeparator()