본문 바로가기
안 씀/java-개념

File 클래스

by unhyepnhj 2024. 6. 23.

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