File 클래스

java.io.File 클래스

디스크에 있는 파일이나 디렉터리의 경로를 관리하는 클래스입니다. File 클래스는 파일이나 디렉터리 경로를 추상화하여 파일의 크기나 디렉터리내의 자식 디렉터리 정보 등을 알 수 있습니다. 그 밖에 파일의 생성과 삭제, 파일의 최종 수정 날짜를 변경하는 등의 기능도 제공합니다.

File 클래스의 생성자와 메서드

File 클래스의 주요 생성자
생성자 설명
File(File parent, String child) File 객체 부모 경로명과 문자열인 자식 경로명으로부터 새로운 File 인스턴스를 생성한다.
File(String pathname) 지정된 경로 문자열을 이용하여 새로운 File 인스턴스를 생성한다.
File(String parent, String child) 부모 경로 문자열과 자식 경로 문자열을 사용하여 File 인스턴스를 생성한다.
File(URI uri) 지정된 URI를 사용하여 File 인스턴스를 생성한다.

 

File 클래스의 주요 메서드
리턴 타입 메서드 설명
boolean canExecute() 대상 경로의 파일이 실행 가능한 파일이면 true, 아니면 false 값을 리턴한다.
boolean canRead() 대상 경로의 파일이 읽기 가능한 파일이면 true, 아니면 false 값을 리턴한다.
boolean canWrite() 대상 경로의 파일이 쓰기 가능한 파일이면 true, 아니면 false 값을 리턴한다.
boolean createNewFile() 대상 경로의 빈(empty) 파일을 생성한다. 성공하면 true, 아니면 false 값을 리턴한다.
boolean delete() 대상 경로의 파일 삭제에 성공하면 true, 아니면 false 값을 리턴한다.
boolean exists() 대상 경로의 파일이 존재하면 true, 아니면 false 값을 리턴한다.
String getAbsolutePath() 대상 경로의 절대 경로명을 리턴한다.
String getCanonicalPath() 대상 경로의 정규 경로명을 리턴한다.
String getName() 대상 경로의 파일명이나 디렉터리명을 리턴한다.
boolean isDirectory() 대상 경로가 디렉터리이면 true, 아니면 false 값을 리턴한다.
boolean isFile() 대상 경로가 파일이면 true, 아니면 false 값을 리턴한다.
String[] list() 대상 경로의 모든 파일과 디렉터리를 문자열 배열로 리턴한다.
boolean mkdir() 대상 경로 상의 디렉터리를 만들면 true, 아니면 false 값을 리턴한다.
boolean renameTo(File dest) 지정된 파일명으로 변경한다.
long lastModified() 지정된 파일의 최종 변경 시간을 밀리초로 리턴한다.
long length() 지정된 파일의 크기를 리턴한다.

File 클래스를 사용한 예

package net.jeonsam.examples;

import java.io.*;

class FileInfo {
	/**
	 * @param args
	 */
	public static void main(String[] args) throws IOException {
		String filePath = "C:\\";
		File f1 = new File(filePath);
		String list[] = f1.list();
		for (int i = 0; i < list.length; i++) {
			File f2 = new File(filePath, list[i]);
			if (f2.isDirectory()) {
				System.out.println(list[i] + " : 디렉터리");
			} else {
				System.out.println(list[i] + " : 파일(" + f2.length() + ")bytes");
			}
		}
		File f3 = new File("C:\\test.txt");
		System.out.println(f3.createNewFile());
		System.out.println(f3.getAbsolutePath());
		System.out.println(f3.getCanonicalPath());
		System.out.println(f3.getPath());
		System.out.println(f3.getName());
		System.out.println(f3.getParent());
		File f4 = new File("C:\\test.txt");
		File f5 = new File("C:\\test1.txt");
		System.out.println(f4.renameTo(f5));
	}

}

File 객체로 할 수 있는 작업들

① 기존 파일을 나타내는 File 인스턴스를 생성한다.

File f = new File("MyFile.txt");

② 새로운 디렉터리를 생성한다.

File dir = new File("MyDirectory");
dir.mkdir();

③ 디렉터리의 내용을 출력한다.

if (dir.isDirectory()) {
    String[] dirContents = dir.list();
    for (int i = 0; i < dirContents.length; i++) {
        System.out.println(dirContents[i]);
    }
}

④ 파일이나 디렉터리의 절대 경로명을 출력한다.

System.out.println(dir.getAbsolutePath());

⑤ 파일이나 디렉터리를 삭제한다.

boolean isDeleted = f.delete();

텍스트 파일 읽기

BufferedReader reader = new BufferedReader(new FileReader(new File());

버퍼를 이용하여 텍스트 파일의 내용을 한 행씩 읽어들이는 예입니다. BufferedReader만 close 시키면 다른 스트림도 자동으로 close 됩니다.

package net.jeonsam.examples;

import java.io.*;

class ReadTextFile {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			File myFile = new File("C:\\MyText.txt");
			FileReader fileReader = new FileReader(myFile);
			
			BufferedReader reader = new BufferedReader(fileReader);
			
			String line = null;
			
			while ((line = reader.readLine()) != null) {
				System.out.println(line);
			}
			reader.close();
		} catch (Exception ex) {
			ex.printStackTrace();
		} 
	}

}

split()을 이용하여 파싱하기

String str = "Thinking in Java/중급서"
String[] res = str.split("/");
for (String t : res) {
    System.out.println(t);
}

텍스트 파일 쓰기

BufferedWriter writer = new BufferedWriter(new FileWriter(new File());

연습문제.

이름/전화번호 형식으로 저장된 텍스트 파일을 읽어서 이름에 해당하는 전화번호 찾기

+ Recent posts