자바에서는 파일과 디렉토리에 대한 정보를 가지고있는 java.io.File
, java.nio.file.Files
클래스를 제공하고 있습니다. Files
는 File
을 개선한 클래스입니다. 오늘은 두 클래스에 대해서 알아보려고 합니다.
File 객체
생성은 다음과 같이 합니다.
File file = new File("파일 경로");
파일 경로를 지정하는 방법에 대해서는 절대 경로, 상대 경로 포스트를 참조해주세요.
위와 같이 객체를 생성했다고 해서 없던 파일이 파로 생기거나, 바로 작업을 할 수 있는 것은 아닙니다. exists()
메소드를 통해서 지정한 파일이 존재하고 있는지 아닌지를 판별하고 그 결과에 따라서 추가적인 작업을 수행하게 됩니다.
file.exists() == false
의 경우에는 다음 메소드들을 통해 파일, 디렉토리를 생성할 수 있습니다.
메소드 | 설명 |
---|---|
boolean createNewFile() | 새 파일 생성 |
boolean mkdir() | 새 디렉토리 생성 |
boolean mkdirs() | 지정된 경로의 모든 존재하지 않는 디렉토리 생성 |
file.exists() == true
의 경우에는 다음 메소드들을 통해 파일, 디렉토리를 조작할 수 있습니다.
메소드 | 설명 |
---|---|
boolean delete() | 파일 또는 디렉토리 삭제 |
boolean canExecute() | 실행 가능한 파일인지 여부 반환 |
boolean canRead() | 읽을 수 있는 파일인지 여부 반환 |
boolean canWrite() | 쓸 수 있는(저장, 수정) 파일인지 여부 반환 |
String getName() | 파일 이름 취득 |
String getParent() | 부모 디렉토리 취득 |
File getParentFile() | 부모 디렉토리를 File 객체로 반환 |
String getPath() | 전체 경로 취득 |
boolean isDirectory() | File 객체가 디렉토리인지 판별 |
boolean isFile() | File 객체가 파일인지 판별 |
boolean isHidden() | File 객체가 숨겨진 파일인지 판별 |
long lastModified() | 최근 수정 날짜, 시간 반환 |
long length() | 파일 크기 취득 |
String[] list() | 디렉토리 내의 파일, 하위 디렉토리들을 String 배열로 반환 인수로 filter를 전달해서 필터링으로 조건부 반환 가능 |
File[] listFiles() | 디렉토리 내의 파일, 하위 디렉토리들을 File 배열로 반환 인수로 filter를 전달해서 필터링으로 조건부 반환 가능 |
Files
클래스는 정적 메소드로만 구성되어 있는 클래스이기에 File 처럼 객체를 생성해서 이용할 필요가 없습니다.
정적 메소드들에는 복사(copy()), 파일/디렉토리 생성(createXxxxx()), 이동(move()), 삭제(delete()), 검색(exists()), 속성, 디렉토리 탐색, 데이터 입출력
에 관한 엄청 많은 메소드들이 정의되어 있습니다. 메소드가 엄청 많기에 필요에 따라 공식 문서에서 검색하면서 사용하시길 바랍니다.
Files의 정적 메소드들의 공통점으로는 매개변수로 Path 객체
를 사용한다는 점 입니다. Path 객체
는 파일이나 디렉토리의 경로에 대한 정보를 가지고 있는 객체입니다. 경로 정보는 정적 메소드 get()
을 통해서 얻을 수 있습니다.
Path path = Paths.get("파일/디렉토리 경로");