File 클래스
- 다양한 파일 관리 작업 지원
- 파일이나 디렉터리에 대해 속성 정보(경로명, 크기, 타입, 수정 날짜 등)를 제공
- 파일 삭제, 디렉터리 생성, 파일 이름 변경, 디렉터리 내 파일 리스트 제공
- 파일 입출력 기능 없음
- 파일을 읽고 쓰기 위해 파일 입출력 클래스(FileInputStream, FileOutputStream, FileReader, FileWriter 등) 사용
File 객체 생성
File f = new File("c:\\Temp\\test.txt);
File f = new File("c:\\Temp", "test.txt"); //디렉터리와 파일명을 나누어 전달
- c:\Temp\test.txt 파일의 File 객체 생성
File 클래스 생성자

File 클래스를 이용한 파일 및 디렉터리 관리
- File 클래스의 메소드를 이용하여 다양한 파일 관리 작업 수행 가능
File 클래스 주요 메소드

length(): 파일 크기
File f = new File("c:\\windows\\system.ini"); //219바이트
long size = f.length(); //size=219
- 파일이나 디렉터리의 크기 리턴
- 파일이 존재하지 않거나 디렉터리 혹은 운영체제 종속적인 장치 파일의 경우 0을 리턴하기도 함
getName(), getPath(), getParent(): 파일 경로명
- getName(): 파일명만 리턴
- getPath(): 완전 경로명 리턴
- getParent(): 부모 디렉터리 리턴
- 모두 문자열로 리턴함
String filename = f.getName(); //"system.ini"
String path = f.getPath(); //"c:\\windows\\system.ini"
String parent = f.getParent(); //"c:\\windows"
isFile(), isDirectory(): 파일 타입 판별
- 경로명이 파일인지 디렉터리인지에 따라 true/false를 리턴
if(f.isFile()) //파일인 경우
System.out.println("파일입니다");
else if(f.isDirectory()) //디렉터리인 경우
System.out.println("디렉터리입니다");
>> 파일입니다
listFiles(): 디렉터리에 있는 파일 리스트 얻기
- File 객체가 디렉터리의 경로명을 가진 경우
- 디렉터리의 모든 파일과 서브디렉터리의 리스트를 얻을 수 있음
- list()는 파일과 서브디렉터리 경로명을 문자열 배열(String[])로 리턴
- listFiles()는 파일과 서브디렉터리 경로명을 File[] 배열로 리턴
File f = new File("c:\\Temp");
File[] subfiles = f.listFiles(); //c:\Temp 디렉터리의 파일 및 서브디렉터리 리스트 열기
for(int i=0; i<filenames.length; i++){
System.out.print(subfiles[i].getName()); //파일명 출력
System.out.prinln(subfiles[i].length()); //파일 크기 출력
}
- listFiles() 메소드를 이용하여 c:\Temp 디렉터리에 있는 모든 파일과 서브디렉터리의 이름 출력
예제 8-8 File 클래스를 이용하여 파일의 타입을 알아내고 디렉터리에 있는 파일들을 나열, 디렉터리 이름을 변경하는 프로그램 작성
import java.io.File;
public class FileEx {
public static void listDirectory(File dir) {
//디렉터리에 포함된 파일과서브 디렉터리의 이름, 크기, 수정 시간 출력 메소드
System.out.println("-----"+dir.getPath()+"의 서브 리스트입니다.-----");
File[] subFiles=dir.listFiles(); //디렉터리에 포함된 파일과 디렉터리 이름 리스트 얻기
for(int i=0; i<subFiles.length; i++) { //subFiles 배열의 각 File에 대해 루프
File f=subFiles[i];
long t=f.lastModified(); //최종 수정 시간
System.out.print(f.getName());
System.out.print("\t파일 크기: "+f.length()); //파일 크기
System.out.printf("\t수정 시간: %tb %td %ta %tT\n", t, t, t, t);
}
}
public static void main(String[] args) {
File f1=new File("c:\\windows\\system.ini");
System.out.println(f1.getPath()+", "+f1.getParent()+", "+f1.getName());
String res="";
if(f1.isFile()) res="file"; //파일 타입일 때
else if(f1.isDirectory()) res="directory"; //디렉터리 타입일 때
System.out.println(f1.getPath()+"은 "+res+"입니다");
File f2=new File("c:\\Temp\\java_sample"); //새로 만들고자 하는 디렉터리
if(!f2.exists()) {
//f2 디렉터리가 존재하는지 검사
f2.mkdir(); //존재하지 않으면 디렉터리 생성
}
listDirectory(new File("c:\\Temp")); //c:Temp에 있는 파일 리스트 출력
f2.renameTo(new File("c:\\Temp\\javasample")); //java_sample에서 javasample로 이름 변경
listDirectory(new File("c:\\Temp")); //javasample로 변경한 후 리스트 출력
}
}

'안 씀 > java-개념' 카테고리의 다른 글
GUI (0) | 2024.06.27 |
---|---|
파일 입출력 응용: 파일 복사 (0) | 2024.06.24 |
버퍼 입출력과 파일 입출력 (0) | 2024.06.23 |
바이트 스트림과 파일 입출력 (0) | 2024.06.20 |
문자 스트림과 파일 입출력 (0) | 2024.06.19 |