본문 바로가기
Programming/Java

[자바/Java] File 클래스

by 코딩하는 랄로 2023. 10. 18.
728x90

File 클래스

자바에서 파일 또는 디렉토리에 대한 파일 객체를 생성하여 다양한 메소드를 사용할 수 있게 해주는 클래스이다. 파일의 해당 경로, 절대 경로 등 여러 편리한 메소드를 제공하고 있다.

 

File 클래스 생성자

File 클래스는 파일, 디렉토리에 대한 객체를 생성하기 때문에 생성한 객체가 파일 일 수도 있고 디렉토리 일 수도 있다.

 

 

File 클래스 메소드

일반 메소드

File 객체의 상대 경로, 절대 경로 등을 제공하는 메소드이다.

 

File 생성/수정/삭제 메소드

파일이나 디렉토리 등을 생성, 수정, 삭제하는 메소드도 제공하고 있다.

 

File 체크 메소드

파일인지 디렉토리인지, 파일이 존재하는 지 등을 체코하는 메소드이다.

 

File 권한 메소드

파일의 권한을 설정, 변경할 수 있는 메소드이다.

 

경로와 관련된 File의 멤버 변수

경로와 관련하여 편의를 위해 File 클래스가 제공하는 멤버 변수이다.

 

 

사용 예제

디렉토리/파일 정보 확인

public class Main {

    public static void main(String[] args) {
		System.out.println("디렉토리 정보 확인");
		System.out.println();
		// current working directory : 현재작업경로
		String curWorkingDir = System.getProperty("user.dir");
		System.out.println("현재 작업 폴더: " + curWorkingDir);
		
		System.out.println();
		// 현재 작업 디렉토리의 파일 리스트 출력
		// File 클래스: 파일(txt, doc, ...) 객체 또는 디렉토리(폴더) 객체
		File curDir = new File(curWorkingDir);
		File[] list = curDir.listFiles();
		// listFiles(): 디렉토리 안에 있는 파일과 디렉토리들을 File[] 배열로 리턴

		for(var f : list){
			if(f.isDirectory()){
				// isDirectory(): File 객체가 '디렉토리'이면 true 리턴
				// isFile(): File 객체가 '파일'이면 true 리턴
				System.out.print("DIR\t");
			} else {
				System.out.print("FILE\t");
			}
			System.out.print(f.getName() + "\t");
			System.out.println(f.length());
		}

		
		System.out.println();
		// 특정 디렉토리의 내용 출력, enhanced for 문 이용
		File tempDir = new File("temp");   // cwd 기준 상대경로 /temp 의 File 객체 생성

		for(var f : tempDir.listFiles()){
			if (f.isFile()) {
				System.out.print("FILE" + "\t");
			} else {
				System.out.print("DIR" + "\t");
			}

			System.out.print(f.getName() + "\t");
			System.out.println(f.length());
		}

		System.out.println();
		// 파일 하나에 대한 정보
		String path = "dummy.txt";
		File f = new File(path);   // 새로운 File 객체  생성
		// new File() 했다 하여, 실제 물리적으로 파일을 생성하는 것이 아니다!!
		System.out.println(f.getName());  // 상대경로
		System.out.println(f.getAbsolutePath());  // 절대경로
		System.out.println(f.exists());  // 물리적으로 존재 여부
		
		System.out.println("\n프로그램 종료");
		
	} // end main()

} // end File11Main

 

폴더/파일 생성/이름 변경/삭제

public class Main {

	public static final String TEST_DIRECTORY = "test";
	public static final String TEMP_DIR = "temp";
	public static final String TEST_FILE = "dummy.txt";
	public static final String TEST_RENAME = "re_dummy.txt";
	
	public static void main(String[] args) {
		System.out.println("폴더/파일 생성, 이름변경, 삭제");
		System.out.println();

		String path = System.getProperty("user.dir")
				+ File.separator
				+ TEST_DIRECTORY;
		System.out.println("절대경로: " + path);
		
		System.out.println();
		// 폴더 생성: mkdir()
		File f = new File(path);
		if(!f.exists()){   // 폴더가 존재하는지 확인
			if(f.mkdir()){
				System.out.println("폴더 생성 성공!");
			} else {
				System.out.println("폴더 생성 실패!");
			}
		} else {
			System.out.println("폴더가 이미 존재합니다.");
		}
		
		System.out.println();
		// 파일 생성 : createNewFile()
		File f2 = new File(f, TEST_FILE); // File(디렉토리 File 객체, 파일명)
		// 명심: new File() 했다고 물리적인 파일이 생긴건 아닙니다!!
		System.out.println(f2.getAbsolutePath());

		if(!f2.exists()){
			try {
				if(f2.createNewFile()){
					System.out.println("파일 생성 성공");
				} else {
					System.out.println("파일 생성 실패!");
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		} else {
			System.out.println("파일이 존재합니다");
		}

		
		System.out.println();
		// 파일 이름 변경: renameTo()
		// renameTo()를 이용해서 다른 폴더로 이동(move)를 할 수도 있다.
		File f3 = new File(f, TEST_RENAME);   // 변경될 이름
		System.out.println(f3.getAbsolutePath());

		if(f2.exists()){
			if(f2.renameTo(f3)){
				System.out.println("파일 이름 변경 성공!");
			} else {
				System.out.println("파일 이름 변경 실패!");
			}
		} else {
			System.out.println("변경할 원본 파일이 없습니다.");
		}
		
		System.out.println();
		// 파일 삭제: delete()
		File f4 = new File(f, TEST_RENAME);
		if(f4.exists()){
			if(f4.delete()){
				System.out.println("파일 삭제 성공!");
			} else {
				System.out.println("파일 삭제 실패!");
			}
		} else {
			System.out.println("삭제할 파일이 없습니다.");
		}
	
		System.out.println("\n프로그램 종료");

	} // end main()

} // end class
728x90