판봉 개발 일기

File 클래스란 무엇인가 본문

자바 복습

File 클래스란 무엇인가

판봉 2021. 7. 17. 15:09
728x90

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