Java java.io 패키지 File 클래스
File 클래스는 입출력에 필요한 파일 및 디렉터리에 관한 정보를 다를 수 있다. File 클래스는 파일과 디렉터리의 접근 권한, 생성된 시간, 마지막 수정 일자, 크기, 경로 등의 정보를 얻을 수 메소드를 가지고 있으며, 새로운 파일과 디렉터리 생성 및 삭제, 이름 변경 등의 조작 메소드를 가지고 있다.
File 클래스 변수
변수 | 설명 |
---|---|
pathSeparator |
경로 구분자 문자(윈도우: “", 리눅스 및 유니스 계열 : “/”) |
separator |
파일간이 구분자 문자(윈도우: “;”, 리눅스 : “:”) |
자바는 앞서 설명을 했듯이, 플랫폼에 대해서 독립적이다. 이는 한번 컴파일을 하여 OS에 상관 없이 구동이 되기 때문에 각 OS에 따라 다르게 동작을 해야 할 필요가 있다. 파일은 OS마다 경로 및 파일간의 구분자가 다르기 때문에 문자열을 직접 입력하기 보다는 이 File 클래스 변수를 사용해야 OS에 상관 없이 오류 없는 프로그램을 구현할 수 있다.
File 생성자
생성자 | 설명 |
---|---|
File(String pathname) |
입력한 pathname(파일명 포함) 경로 파일의 객체를 생성한다. |
File(String parent, String child) |
parent 디렉터리 경로의 child 파일에 대한 객체를 생성한다. |
File(File parent, String child) |
파일 객체 parent의 child 파일에 대한 객체를 생성한다. |
File(URI uri) |
uri 경로에 대한 파일 객체를 생성한다. |
File 메소드
파일 조회 관련 메소드
메소드 | 설명 |
---|---|
File getAbsoluteFile() |
파일의 절대 경로를 반환한다. |
String getAbsolutePath() |
파일의 절대 경로를 문자열로 반환한다. |
File getCanonicalFile() |
파일의 정규 경로를 반환한다. |
String getCanonicalPath() |
파일의 정규 경로를 문자열로 반환한다. |
String getName() |
파일이나 폴더의 이름을 넘겨준다. |
String getParent() |
부모 경로에 대한 경로명을 문자열로 반환한다. |
File getParentFile() |
부모 폴더를 File의 형태로 반환한다. |
String getPath() |
파일의 경로를 문자열의 형태로 반환한다. |
long getTotalSpace() |
하드디스크의 총 용량을 반환한다. |
long getUsableSpace() |
하드디스크의 사용 가능한 용량을 반환한다. |
long getFreeSpace() |
하드디스크의 남은 공간을 반환한다. |
int hashCode() |
hash code를 반환한다. |
long lastModified() |
해당 경로 파일의 최종 수정 일자를 반환한다. |
long length() |
해당 경로 파일의 길이를 반환한다. |
Path toPath() |
java.nio.file.Path 객체로 반환한다. |
URI toURI() |
URI 형태로 파일 경로를 반환한다. |
File[] listRoots() |
하드디스크의 루트 경로를 반환한다. |
String[] list() |
경로의 파일들과 폴더를 문자열 배열로 반환한다. |
String[] list(FilenameFilter filter) |
filter에 만족되는 파일들과 폴더 이름을 문자열 배열로 반환한다. |
File[] listFiles() |
해당 경로의 파일들과 폴더의 파일을 배열로 반환한다. |
File[] listFiles(FileFilter filter) |
filter에 만족되는 파일들과 폴더를 File 배열로 반환한다. |
File[] listFiles(FilenameFilter filter) |
filter에 만족되는 파일들과 폴더를 File 배열로 반환한다. |
파일 조작(생성, 수정, 삭제) 관련 메소드
메소드 | 설명 |
---|---|
boolean createNewFile() |
주어진 이름의 파일이 없으면 새로 생성한다. |
static File createTempFile(String prefix, String suffix) |
파일명에 prefix와 suffix(null이면 .tmp)를 붙여 임시 파일을 기본 임시 파일 디렉터리에 생성한다. |
static File createTempFile(String prefix, String suffix, File directory) |
파일명에 입력한 prefix와 suffix(null이면 .tmp)를 붙여 directory에 임시 파일을 생성한다. |
boolean delete() |
파일이나 디렉터리를 삭제한다. 단, 디렉터리가 비어있지 않으면 삭제할 수 없다. |
void deleteOnExit() |
자바 가상 머신이 끝날 때 파일을 삭제한다. |
boolean mkdir() |
해당 경로에 폴더를 만든다. 생성 성공하면 true, 실패하면 false을 반환한다. |
boolean mkdirs() |
존재하지 않는 부모 디렉터리까지 포함하여 해당 경로에 폴더를 만든다. |
boolean renameTo(File dest) |
파일를 dest 로 변경한다. 이름뿐 아니라 경로도 변경된다. |
파일 체크 관련 메소드
메소드 | 설명 |
---|---|
boolean exists() |
파일의 존재 여부를 반환한다. |
boolean isAbsolute() |
해당 경로가 절대 경로인지 여부를 반환한다. |
boolean isDirectory() |
해당 경로가 디렉터리인지 여부를 반환한다. |
boolean isFile() |
해당 경로가 file 인지 여부를 반환한다. |
boolean isHidden() |
해당 경로가 숨김 파일인지 여부를 반환한다. |
파일 권한 관련 메소드
메소드 | 설명 |
---|---|
boolean canExecute() |
파일 실행 권한이 있는지 여부를 반환한다. |
boolean canRead() |
파일을 읽기 권한이 있는지 여부를 반환한다. |
boolean canWrite() |
파일을 씨기 권한이 있는지 여부를 반환한다. |
boolean setExecutable(boolean executable) |
파일 소유자의 실행 권한을 설정한다. |
boolean setExecutable(boolean executable, boolean ownerOnly) |
파일의 실행 권한을 소유자 또는 모두에 대해 설정한다. |
boolean setReadable(boolean readable) |
파일의 소유자의 읽기 권한을 설정한다. |
boolean setReadable(boolean readable, boolean ownerOnly) |
파일의 읽기 권한을 소유자 또는 모두에 대해 설정한다. |
boolean setReadOnly() |
파일을 읽기 전용으로 변경한다. |
boolean setWritable(boolean writable) |
파일의 소유자의 쓰기 권한을 설정한다. |
boolean setWritable(boolean writable boolean ownerOnly) |
파일의 쓰기 권한을 소유자 또는 모두에 대해 설정한다. |
File 예제
예제 1) 아래 예제는 특정 파일에 대한 정보를 화면에 표시해 준다.
package com.devkuma.tutorial.java.io;
import java.io.File;
import java.io.IOException;
public class FileClass {
public static void main(String[] args) {
// file.txt 객체 생성한다.
File file = new File("file.txt");
// 파일이 존재 여부를 체크한다.
if (file.exists()) {
try {
// 파일 이름을 표시한다.
System.out.println("getName: " + file.getName());
// 파일 경로을 표시한다.
System.out.println("getPath: " + file.getPath());
// 파일 절대 경로 표시한다.
System.out.println("getAbsolutePath : " + file.getAbsolutePath());
// 파일 정규 경로 표시한다.
System.out.println("getCanonicalPath : " + file.getCanonicalPath());
// 상위 디렉터리를 표시한다.
System.out.println("getParent : " + file.getParent());
// 파일의 쓰기/읽기 권한 체크한다.
if (file.canWrite())
System.out.println(file.getName() + " can write.");
if (file.canRead())
System.out.println(file.getName() + " can read.");
// 객체의 파일, 폴더 여부 체크한다.
if (file.isFile()) {
System.out.println(file.getName() + " is file");
}
if (file.isDirectory()) {
System.out.println(file.getName() + " is directory.");
}
// 파일 내용 길이를 표시한다.
System.out.println(file.getName() + " length=" + file.length());
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("not found file");
}
}
}
실행 결과는 아래와 같다.
getName: file.txt
getPath: file.txt
getAbsolutePath : /Users/{user}/workspace/java-tutorial/file.txt
getCanonicalPath : /Users/{user}/workspace/java-tutorial/file.txt
getParent : null
file.txt can write.
file.txt can read.
file.txt is file
file.txt length=26
예제 2) 아래 예제는 특정 디렉터리에 대한 파일 및 디렉터리리 목록을 표시해 준다.
package com.devkuma.tutorial.java.io;
import java.io.File;
public class FileClass2 {
public static void main(String[] args) {
// 프로젝트 현재 디렉터리를 객체로 생성한다.
File file = new File(".");
// 폴더의 파일/폴더 목록을 문자열 배열로 반환
String[] files = file.list();
// 출력
for (String fileName : files) {
System.out.println(fileName);
}
}
}
실행 결과:
.classpath
.project
.settings
bin
file.txt
src
예제 3) 아래 예제는 루트 경로를 표시해 주고 하드 디스크의 용량을 화면에 표시해 준다.
package com.devkuma.tutorial.java.io;
import java.io.File;
public class FileClass3 {
public static void main(String[] args) {
// 하드디스크의 루트 경로(드라이브)들을 배열로 반환한다.
File[] roots = File.listRoots();
for (File root : roots) {
// 루트 경로(드라이브)의 절대 경로
String drive = root.getAbsolutePath();
// 하드디스크 전체 용량
long totalSpace = root.getTotalSpace();
// 사용가능한 디스크 용량
long usableSpace = root.getUsableSpace();
// 여유 디스크 용량
long freeSpace = root.getFreeSpace();
// 사용한 디스크 용량
long usedSpace = totalSpace - usableSpace;
System.out.println("root : " + drive);
System.out.println("Total Space : " + totalSpace);
System.out.println("Usable Space : " + usableSpace);
System.out.println("Free Space : " + freeSpace);
System.out.println("Used Space : " + usedSpace);
}
}
}
실행 결과:
root : /
Total Space : 598000009216
Usable Space : 100067610624
Free Space : 100329754624
Used Space : 497932398592
최종 수정 : 2021-08-27