본문 바로가기

Java

io/nio 메서드 변경점

반응형

출처-http://freeminderhuni.blogspot.kr/2013/10/7-nio2-10.html

10.1 java.io.File을 이용한 코드 리팩토링

File.toPath() 사용하여 Path 객체로 변환하기

JavaDoc 설명
java.io.File
java.nio.file.Path
 
클래스 이름 대응 관계
java.io.File
java.io.file.Path
 
경로이름과 객체의 동등성을 테스트 한다.
File.equals(Object)
Path.equals(Object)
 
두 경로 이름을 사전순으로 비교한다.
File.compareTo(File)
Path.compareTo(Path)
 
경로명에 대한 절대 경로명을 문자열로 반환한다.
File.getAbsolutePath()
Path.toAbsolutePath()
 
경로명을 절대 경로 형식으로 반환한다.
File.getAbsoluteFile()
Path.toAbsolutePath()
 
경로명을 표준 형식 문자열로 반환한다.(정규화)
File.getCanonicalPath(0
Path.toRealPath(LinkOption…)
Path.normalize()
 
경로명을 표준 형식으로 반환한다.
File.getCanonicalFile()
Path.toRealPath(LinkOption…)
Path.normalize()
 
경로명을 나타내는 URI를 생성한다.
File.toURI()
Path.toUri()
 
일반 파일인지 테스트한다.
File.isFile()
Files.isRegularFile(Path,LinkOption…)
 
디렉토리 인지 여부
File.isDirectory()
Files.isDirectory(Path,LinkOption…)
 
숨김 파일 여부
File.isHidden()
Files.isHidden(Path)
 
읽은 수 있는지
File.canRead()
Files.isReadable(Path)
 
수정 가능 한지
File.canWrite()
Files.isWritable(Path)
 
실행 가능 한지
File.canExecute()
Files.isExecutable(Path)
 
실제 존재 여부
File.exist()
Files.exists(Path,LinkOption…)
Files.notExists(Path,LinkOption…)
 
디렉토리 생성
File.mkdir()
Files.createDirectory(Path,FileAttribute<?>...)
 
패스 있는 디렉토리 모두 생성
File.mkdirs)
Files.createDirectories(Path,FileAttribute<?>...)
 
파일이 존재 않을 때만 생성
File.createNewFile()
Files.createFile(Path,FileAttribute<?>...)
 
하위 목록들을 반환한다.(문자열 배열로)
File.list()
File.listFiles()
Files.newDirectoryStream(Path)
 
하위 목록들을 반환(필터 적용)
File.list(FilenameFilter)
File.listFiles(FileFilter)
File.listFiles(FileNameFilter)
Files.newDirectoryStream(Path, DirectoryStream.Filter<? super Path>)
Files.newDirectoryStream(Path,String)
 
파일 크기
File.length()
Files.size(Path)
 
파일 삭제
File.delete()
Files.delete(Path)
Files.deleteIfExists(Path)
 
파일 이름 변경
File.renameTo(File)
Files.move(Path,Path,CopyOption)
 
실행 권한으로 설정
File.setExecutable(boolean,boolean)
Files.setAttribute(Path,String,Object,LinkOption…)
 
읽기 권한으로 설정
File.setReadable(boolean,boolean)
Files.setAttribute(Path,String,Object,LinkOption…)
 
읽기 전용으로 설정
File.setReadOnly()
Files.setAttribute(Path,String,Object,LinkOption…)
 
쓰기 권한으로 설정
File.setWritable(boolean,boolean)
Files.setAttribute(Path,String,Object,LinkOption…)
 
파일 수정일 얻기
File.lastModified()
Files.getLastModifiedTime(Path,LinkOption...)
 
파일 수정일 변경
File.setLastModified(long)
Files.setLastModified(Path,FileTime)
 
임시 파일 디렉토리에 임시 파일 생성(접두어 사용)
File.createTempFile(String,String)
File.createTempFile(String prefix,String suffix,FileAttribute<?>...attrs)
 
지정된 디렉토리에 임시 파일 생성
File.createTempFile(String,String,File)
File.createTempFile(Path dir,String prefix,String suffix,FileAttribute<?>...attrs)
 
파티션의 크기를 반환
File.getTotalSpace()
FileStore.getTotalSpace()
 
파티션의 여유 공간 반환
File.getFreeSpace()
FileStore.getUnallocatedSpace(0
 
파티션의 가상머신이 이용할 수는 바이트 수 반환(free보다 usable 사용)
File.getUsableSpace()
FileStore.getUsableSpace()
 
파일시스템 루트 나열
File.listRoots()
FileSystem.getRootDirectories()
 
임의 접근 파일
java.io.RandomAccessFile
java.nio.channels.SeekableByteChannel
 
가상 머신 종료시 경로명에 파일 삭제 하기
File.deleteOnExit()
DELETE_ON_CLOSE 옵션으로 대체
 
두 경로를 조합하기
new File(parent,”new_file”)
parent.resolve(“new_file”)
 

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 사용자 지정 파일시스템 제공자 클래스 생성하기
생성 단계
  1. java.nio.file.spi.FileSystemProvider 클래스를 상속
  2. 제공자를 위한 URI 스킴을 정의 한다.(getScheme() 메소드가 이 URI 스킴을 반환해야 한다.)
  3. 제공자의 생성된 파일시스템을 관리하는 내부 캐시를 생성한다.
  4. 파일시스템 생성과 기존 파일시스템의 참조를 가져오는 newFileSystem()과 getFileSystem() 메소드를 구현한다.
  5. newFileChannel() 또는 newAsyncronousFileChannel() 메소드를 구현한다.이들 메서드는 파일시스템에서 파일을 읽거나 쓸 수 있는 FileChannel 객체를 반환한다.

10.3.2 사용자 지정 파일시스템 클래스 생성하기
생성 단계
  1. java.nio.file.FileSystem 클래스를 상속
  2. 자신의 용도에 따라 파일 시스템의 메소드를 구현한다.(루트의 개수, 읽기/쓰기 접근,파일 저장소 등을 정의해야 한다>)  
반응형