File 클래스
-
[Java강의노트] 파일 입출력2009.08.28
[Java강의노트] 파일 입출력
2009. 8. 28. 14:58
java.io.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 인스턴스를 생성한다. |
리턴 타입 | 메서드 | 설명 |
---|---|---|
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());
연습문제.
이름/전화번호 형식으로 저장된 텍스트 파일을 읽어서 이름에 해당하는 전화번호 찾기