판봉 개발 일기
File 클래스란 무엇인가 본문
File 클래스
java.io 패키지에서 제공하는 File 클래스는 파일 및 폴더(디렉토리) 정보를 제공해주는 역할을 합니다.
객체 생성 방법은 다음과 같습니다.
File file = new file("C:/Temp/file.txt");
File file = new File("C:\\Temp\\file.txt");
참고로 윈도우의 경로 구분자는 /,\둘다 사용가능하며 유닉스나 리눅스는 /를 사용합니다.
그리고 윈도우에서 \를 경로 구분자로 사용하려면 이스케이프 문자인(\\)로 기술해야합니다. -> 2개
File 객체를 생성했다고 해서 파일이나 폴더가 생기진 않습니다.
또한 파일과 폴더가 없어도 예외가 발생하지 않습니다.
여부를 알아보려면 객체 생성 뒤 exists()메소드를 호출해야 합니다.
파일및폴더 존재시 true/ 반대는 false를 리턴합니다.
boolean isExist = file.exists();
다음은 exists() 메소드릐 리턴값이 true나 false일때 메소드로 파일 또는 폴더를 생성할수있는 목록입니다.
리턴 타입 | 메소드 | 설명 |
boolean | createNewFile() | 새로운 파일 생성 |
boolean | mkdir() | 새로운 폴더 생성 |
boolean | mkdirs() | 경로상에 없는 모든 폴더를 생성 |
그리고 exists() 메소드의 리턴값이 true라면 다음의 메소드들을 사용할 수 있습니다.
리턴 타입 | 메소드 | 설명 |
boolean | delete() | 파일 또는 폴더 삭제 |
boolean | canExecute() | 실행할 수 있는 파일인지 확인 |
boolean | canRead() | 읽을 수 있는 파일인지 확인 |
boolean | canWrite() | 수정 및 저장할 수 있는 파일인지 확인 |
String | getName() | 파일의 이름을 리턴 |
String | getParent() | 부모 폴더를 리턴 |
File | getParentFile() | 부모 폴더를 File객체로 생성 후 리턴 |
String | getPath() | 전체 경로 리턴 |
boolean | isDirectory() | 폴더인지 확인 |
boolean | isFile() | 파일인지 확인 |
boolean | isHidden() | 숨김 파일인지 확인 |
long | lastModified() | 마지막 수정 날짜 및 시간을 리턴 |
long | lenght() | 파일의 크기 리턴 |
String[] | list() | 폴더에 포함된 파일 및 서브 폴더 목록 전부를 String 배열로 리턴 |
String[] | list(FilenameFilter filter) | 폴더에 포함된 파일 및 서브 폴더 목록 중에 FilenameFilter에 맞는 것만 String 배열로 리턴 |
File[] | listFile() | 폴더에 포함된 파일 및 서브 폴더 목록 전부를 File 배열로 리턴 |
File[] | listFiles(FilenameFilter filter) | 폴더에 포함된 파일 및 서브 폴더 목록중에 FilenameFilter에 맞는 것만 File 배열로 리턴 |
다음은 그와 관련된 코드입니다.
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileExample {
public static void main(String[] args) throws Exception {
File dir = new File("C:/Temp/images");
File file1 = new File("C:/Temp/file1.txt");
File file2 = new File("C:/Temp/file2.txt");
File file3 = new File("C:/Temp/file3.txt"); // File객체 생성
if(dir.exists() == false) { dir.mkdirs(); }
if(file1.exists() == false) { file1.createNewFile(); }
if(file2.exists() == false) { file2.createNewFile(); }
if(file3.exists() == false) { file3.createNewFile(); }// 파일또는 폴더가 존재하지 않으면 생성 폴더만들고 파일만들기
File temp = new File("C:/Temp");
File[] contents = temp.listFiles(); //C:Temp 폴더의 내용 목록을 File 배열로 받음
System.out.println("시간\t\t\t형태\t\t크기\t이름");
System.out.println("-------------------------------------");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a HH:mm");
for(File file : contents) {
System.out.print(sdf.format(new Date(file.lastModified())));
if(file.isDirectory()) {
System.out.print("\t<DIR>\t\t\t" + file.getName());
} else {
System.out.print("\t\t\t" + file.length() + "\t" + file.getName());// 파일 또는 폴더 정보를 출력
}
System.out.println();
}
}
}
참고로 파일 또는 폴더의 정보를 얻기위해 File 객체를 단독으로 사용 할 수 있지만 파일 입출력 스트림(FileinPutStream, FileOutputStream, FileReader, FileWriter)객체를 생성할 때 경로 정보를 제공할 목적으로도 사용됩니다.
다음과 같이 대입이 가능합니다.
FileInputStream fis = new FileInputStream("C:/Temp/image.gif");
File file = new File("C:/Temp/image.gif"):
FileInputStrema fis = new FileInputStream(file);
위 코드는 만약에 코드가 길어진다면 굉장히 단축되는 코드를 작성할 수 있으므로 효과가 좋을꺼라고 예상합니다.
판봉의 한줄평
여태까지 자바를 복습해 보았습니다.잘 까먹을지 안까먹을지는 모르겠지만 새로운 프로그래밍 언어를 배워서 좋았고, 앞으로 작은 프로젝트에 자바를 활용할때 생각이 안난다면 이곳을 많이 찾아올 것 같습니다.정보산업처리기사 복습도 시험이 끝나기 전까지는 꾸준히 올릴 예정입니다.
'자바 복습' 카테고리의 다른 글
Scanner 클래스는 무엇인가 (0) | 2021.07.17 |
---|---|
입출력 관련 API (0) | 2021.07.17 |
객체 입출력 보조 스트림 (0) | 2021.07.16 |
프린터 보조 스트림 (0) | 2021.07.16 |
기본 타입 입출력 보조 스트림 (0) | 2021.07.15 |