Java

Java_File과 Files 클래스

ssmm95 2024. 10. 22. 13:00

File 클래스와 Files 클래스는 자바에서 파일 및 디렉토리 관리를 위해 사용하는 주요 클래스 

 

File 클래스

: 파일이나 디렉토리에 대한 경로 정보를 표현하고 관리하는 데 사용 

파일이 존재하는지, 파일의이름이나 크기, 디렉토리인지 여부 등을 확인하는 데 주로 사용

실제 파일 내용에 접근하거나 수정하는 기능은 제공 x

 

File 클래스로부터 File 객체를 생성하는 방법

File file = new File ("경로");

 경로 구분자

윈도우 : \\ , / 사용

mac , 리눅스 : / 사용

 

윈도우 File 객체 생성

File file = new File("C:/Temp/file.txt");
File file = new File("C:\\Temp\\file.txt");

 파일 객체를 생성했다고 해서 파일, 디렉토리가 생성되는 것이 아니다 

경로에 실제 파일이나 디렉토리가 없더라도 예외가 발생하지 않는다 

 

파일, 디렉토리가 실제 있는지 확인하고 싶다면 File 객체를 생성하고 나서 exists() 메소드 호출 

boolean isExist = file.exists(); 
// 파일이나 폴더가 존대한다면 true를 리턴한다

 

exists() 메소드가 false 리턴할 경우 아래의 메소드를 파일, 폴더 생성

리턴타입 메소드 설명
boolean createNewFile() 새로운 파일 생성
boolean mkdir() 새로운 디렉토리 생성
boolean mkdirs() 경로상에 없는 모든 디렉토리 생성

 

exists() 메소드가 true 리턴할 경우 아래의 메소드 사용가능

 

리턴타입 메소드 설명
String getName() 파일 또는 디렉토리의 이름을 반환합니다.
String getPath() 파일 또는 디렉토리의 경로를 문자열로 반환합니다.
String getAbsolutePath() 파일 또는 디렉토리의 절대 경로를 반환합니다.
boolean exists() 파일 또는 디렉토리가 존재하는지 확인합니다.
boolean isFile() 해당 경로가 파일인지 확인합니다.
boolean isDirectory() 해당 경로가 디렉토리인지 확인합니다.
boolean canRead() 파일이 읽기 가능한지 확인합니다.
boolean canWrite() 파일이 쓰기 가능한지 확인합니다.
boolean canExecute() 파일이 실행 가능한지 확인합니다.
boolean delete() 파일 또는 디렉토리를 삭제합니다. 삭제에 성공하면 true를 반환합니다.
boolean renameTo(File dest) 파일 또는 디렉토리의 이름을 변경하거나 위치를 이동시킵니다. 성공 시 true 반환.
boolean mkdir() 새로운 디렉토리를 생성합니다. 생성에 성공하면 true를 반환합니다.
boolean mkdirs() 경로에 포함된 모든 디렉토리를 생성합니다. 생성에 성공하면 true를 반환합니다.
boolean setReadOnly() 파일을 읽기 전용으로 설정합니다. 설정에 성공하면 true를 반환합니다.
boolean setExecutable(boolean executable) 파일의 실행 가능 여부를 설정합니다. 설정에 성공하면 true를 반환합니다.
boolean setReadable(boolean readable) 파일의 읽기 가능 여부를 설정합니다. 설정에 성공하면 true를 반환합니다.
boolean setWritable(boolean writable) 파일의 쓰기 가능 여부를 설정합니다. 설정에 성공하면 true를 반환합니다.
long length() 파일의 크기를 바이트 단위로 반환합니다. 디렉토리의 경우, 크기는 정의되지 않습니다.
long lastModified() 파일 또는 디렉토리의 마지막 수정 시간을 밀리초 단위로 반환합니다.
String[] list() 디렉토리 내 파일 및 디렉토리 이름을 문자열 배열로 반환합니다.
File[] listFiles() 디렉토리 내 파일 및 디렉토리 목록을 File 배열로 반환합니다.

Files 클래스 

: Files 클래스는 자바 NIO(NewI/O) 패키지 일부로 파일과 디렉토리를 조작할 수 있는 정적 메소드 제공한다

파일을 생성, 복사, 이동, 삭제, 파일내용을 읽고 쓰는 작업 등을 수행할 수 있다

기능 관련 메소드
복사 copy
생성 createFile(Path path, FileAttribute<?>... attrs), createDirectory(Path path, FileAttribute<?>... attrs), createDirectories(Path path, FileAttribute<?>... attrs), createTempFile(String prefix, String suffix, FileAttribute<?>... attrs), createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>... attrs), createTempDirectory(String prefix, FileAttribute<?>... attrs), createTempDirectory(Path dir, String prefix, FileAttribute<?>... attrs).
이동 move
삭제 delete, deleteIfExists
존재,검색,비교 exists,notExists,find,mismatch
속성 isReadable(Path path), isWritable(Path path), isExecutable(Path path), isDirectory(Path path), isRegularFile(Path path), isSymbolicLink(Path path), exists(Path path), notExists(Path path), isHidden(Path path), getLastModifiedTime(Path path), getOwner(Path path), size(Path path), getPosixFilePermissions(Path path)
디렉토리 탐색 lis, newDirectoryStream,walk
데이터 입출력 readAllBytes(Path path), readAllLines(Path path), readAllLines(Path path, Charset cs), newBufferedReader(Path path), newBufferedReader(Path path, Charset cs), newBufferedWriter(Path path), newBufferedWriter(Path path, Charset cs), write(Path path, byte[] bytes), write(Path path, Iterable<? extends CharSequence> lines), write(Path path, byte[] bytes, OpenOption... options), write(Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options), copy(Path source, Path target, CopyOption... options), move(Path source, Path target, CopyOption... options), newInputStream(Path path, OpenOption... options), newOutputStream(Path path, OpenOption... options)

 

이 메소드들은 매개값으로 Path 객체를 받는다 

Path 객체는 파일이나 디렉토리를 찾기 위한 경로 정보를 가지고 있는데 정적 메소드인 get() 메소드로 다음과 같이 얻을 수 있다 

Path path = Paths.get(String first, String ... more)

 

get() 메소드의 개가값은 파일경로인데 전체경로를 한꺼번에 지정하거나, 상위 디렉토리와 하위 디렉토리를 나열해서 지정할 수 있다

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");

 

파일의 경로는 절대경로, 상대경로 모두 사용할 수 있다 

현재 디렉토리 위치가 "C:\Temp" 경우 "C:\Temp\dir\file.txt" 는 다음과 같이 지정 가능하다

Path path = Paths.get("dir/file.txt");
Path path = Paths.get("./dir/file.txt");

 

현재 위치가 "C:\Temp\dir1" 이면 "C:\Temp\dir2\file.txt" 는 다음과 같이 지정이 가능하다

** . 이면 현재디렉토리 , .. 상위 디렉토리

 

Path path = Paths.get("../dir2/file.txt");

 

 

File vs Files 클래스 차이점

 

구분 File 클래스 Files 클래스
역할 파일/디렉토리의 경로 정보를 관리하고, 파일 시스템과 상호작용하는 객체입니다. 다양한 파일 조작 작업을 수행하는 정적 메서드를 제공합니다.
기능 범위 파일의 존재 여부, 파일 이름, 경로, 삭제 등 기본적인 파일 관리 기능을 제공합니다. 파일 생성, 복사, 삭제, 이동, 읽기, 쓰기 등 다양한 파일 조작 기능을 지원합니다.
NIO 지원 기본적인 I/O 패키지에 속합니다. NIO (New I/O) 패키지의 일부로 성능과 유연성이 향상되었습니다.
Path와의 호환성 File 객체를 사용하여 경로를 다룹니다. Path 객체와 함께 사용하며, NIO의 기능을 완벽히 지원합니다.

 

  • File 클래스는 파일과 디렉토리의 경로 정보를 관리하고 파일이 존재하는지 확인하거나 삭제하는 등 기본적인 파일 작업에 사용
  • Files 클래스는 Path 객체와 함께 사용되며, 파일 생성, 삭제, 복사, 이동, 읽기, 쓰기와 같은 고급 파일 작업을 지원

 

'Java' 카테고리의 다른 글

Java_객체 스트림  (0) 2024.10.22
Java_프린트 스트림  (0) 2024.10.22
Java_기본 타입 스트림  (0) 2024.10.22
Java_보조스트림_성능 향상 스트림  (0) 2024.10.22
Java_보조스트림, 문자변환 스트림  (0) 2024.10.21