File 클래스는 파일 크기, 파일 속성, 파일 이름 등의 정보와 파일 생성 및 삭제의 기능을 제공합니다.

 

 


 

 

먼저 파일 객체를 생성하고 주소를 지정합니다.

저는 현재 Temp 폴더에 file.txt 파일이 없습니다.

 

@Log4j2
public class FileExample {

    // File 객체를 이용해서, CMD의 dir 명령어의 출력결과를 만듬
    public static void main(String[] args) throws IOException{
        // 파일 객체 생성 시, 생성자 매개변수로 File 객체가 표현할
        // 파일이나 디렉터리의 경로를 명시해주면 됨
        // 이때, 지정된 파일이나 디렉토리는 실제 존재하지 않아도 오류가 나지 않음.
        File dir = new File("C:/Temp/Dir");
        File file1 = new File("C:/Temp/file1.txt");
        File file2 = new File("C:/Temp/file2.txt");
        // File file3 = new File("file:///C:/Temp/file3.txt");
		
        log.info("1. dir : {}", dir);
        log.info("1. dir : {}", file1);
        log.info("1. dir : {}", file2);

 

file.txt

 

참조변수가 해당 레퍼런스를 참조하기 때문에, 해당 레퍼런스에 파일이 없어도 잘 출력이 되는 것을 확인할 수 있습니다.

 

 

그렇다면 File 클래스의 메서드를 활용해서 디렉터리를 생성하겠습니다.

 

        // 파일 생성
        // mkdirs는 file 객체가 가지고 있는 전체 경로 상에
        // 존재하지 않는 모든 디렉터리를 만들라는 의미임
        // 즉, 없으면 만들고 있으면 그대로 둠
        if(dir.exists() == false) {
			
        //  dir.mkdir();
            dir.mkdirs();
        } // if
		
        // 없으면 새로운 파일 생성
        if(file1.exists() == false) {
            file1.createNewFile();
        } // if
		
		
        if(file2.exists() == false) {
            file2.createNewFile();
        } // if

 

위 코드에서 exists()는 파일 존재의 유무를 확인하는 메서드입니다.

해당 경로에 파일이 없으면 만들고 있다면 변경사항은 없습니다.

 

 

위 코드들을 활용해서 C드라이브의 Temp폴더의 디렉터리 목록을 보여주는 코드를 작성할 수 있습니다.

 

        File temp = new File("C:/Temp");
		
        // 날짜 객체로부터 포매팅 문자열 생성
        SimpleDateFormat sdf = 
                new SimpleDateFormat("yyyy/mm/dd   a   HH:mm");
		
        // C:/temp 폴더 안에 있는 모든 파일을 배열로 획득
        File[] contents = temp.listFiles();
		
        // 실제 dir 명령의 출력 결과를 재현하는 코드
        System.out.println("    날짜             시간       형태           크기     이름");
        System.out.println("------------------------------------------------------------");
		
        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.println("\t\t\t" + file.length() + "\t" + file.getName());
            } // if-else
			
            System.out.println();
        } // enhanced for
		
    } // main
	
} // end class

 

 

 

dir

 

코드 자체는 크게 어렵지 않습니다.

for문은 temp 폴더 내 디렉터리, 파일을 하나씩 순회하며 콘솔에 출력하는 역할입니다.

위 코드는 명령 프롬포트의 명령어인 dir의 결과와 유사한 것을 알 수 있습니다.

 

 

'Java' 카테고리의 다른 글

객체 입출력 스트림  (0) 2023.08.18
보조 스트림  (0) 2023.08.17
Exception Handling  (0) 2023.07.28
Exception  (0) 2023.07.27
익명구현객체  (0) 2023.07.26

+ Recent posts