File class 정리

유방현·2024년 10월 28일

1.1 기본 정의

import java.io.File;

public class FileBasics {
    public void createFile() {
        // File 객체 생성
        File file = new File("example.txt");
        File directory = new File("myDirectory");
    }
}

1.2 주요 생성자

public class FileConstructors {
    public void demonstrateConstructors() {
        // 문자열 경로로 생성
        File file1 = new File("test.txt");
        
        // 부모 경로와 자식 경로로 생성
        File file2 = new File("myDir", "test.txt");
        
        // File 객체와 하위 경로로 생성
        File parent = new File("myDir");
        File file3 = new File(parent, "test.txt");
    }
}

2. 파일 정보 확인 메소드

2.1 기본 정보 조회

public class FileInfo {
    public void getFileInfo(File file) {
        // 파일 존재 여부
        boolean exists = file.exists();
        
        // 파일 이름
        String name = file.getName();
        
        // 파일 경로
        String path = file.getPath();
        String absolutePath = file.getAbsolutePath();
        
        // 파일 크기
        long size = file.length();
        
        // 최종 수정 시간
        long lastModified = file.lastModified();
    }
}

2.2 파일 속성 확인

public class FileAttributes {
    public void checkAttributes(File file) {
        // 읽기/쓰기/실행 권한
        boolean canRead = file.canRead();
        boolean canWrite = file.canWrite();
        boolean canExecute = file.canExecute();
        
        // 파일/디렉토리 여부
        boolean isFile = file.isFile();
        boolean isDirectory = file.isDirectory();
        
        // 숨김 파일 여부
        boolean isHidden = file.isHidden();
    }
}

3. 파일 조작 메소드

3.1 파일 생성 및 삭제

public class FileOperations {
    public void manipulateFile() throws IOException {
        File file = new File("newFile.txt");
        
        // 파일 생성
        boolean created = file.createNewFile();
        
        // 파일 삭제
        boolean deleted = file.delete();
        
        // 프로그램 종료 시 삭제
        file.deleteOnExit();
    }
}

3.2 디렉토리 조작

public class DirectoryOperations {
    public void manipulateDirectory() {
        File dir = new File("newDir");
        
        // 디렉토리 생성
        boolean created = dir.mkdir();
        
        // 여러 단계의 디렉토리 생성
        boolean createdMultiple = dir.mkdirs();
        
        // 디렉토리 내용 조회
        String[] contents = dir.list();
        File[] files = dir.listFiles();
    }
}

4. 파일 필터링

4.1 FilenameFilter 사용

public class FileFiltering {
    public void filterFiles() {
        File dir = new File("myDir");
        
        // 파일 이름으로 필터링
        String[] txtFiles = dir.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".txt");
            }
        });
        
        // Lambda 표현식 사용
        String[] pdfFiles = dir.list((dir1, name) -> name.endsWith(".pdf"));
    }
}

4.2 FileFilter 사용

public class AdvancedFiltering {
    public void filterWithFileFilter() {
        File dir = new File("myDir");
        
        // FileFilter를 사용한 필터링
        File[] largeFiles = dir.listFiles(new FileFilter() {
            @Override
            public boolean accept(File file) {
                return file.length() > 1000000; // 1MB 이상
            }
        });
        
        // Lambda 표현식 사용
        File[] recentFiles = dir.listFiles(file -> 
            System.currentTimeMillis() - file.lastModified() < 24 * 60 * 60 * 1000);
    }
}

5. 실전 활용 예제

5.1 재귀적 디렉토리 탐색

public class RecursiveFileSearch {
    public void searchDirectory(File directory) {
        if (directory.exists() && directory.isDirectory()) {
            File[] files = directory.listFiles();
            if (files != null) {
                for (File file : files) {
                    if (file.isDirectory()) {
                        searchDirectory(file);
                    } else {
                        // 파일 처리 로직
                        processFile(file);
                    }
                }
            }
        }
    }
    
    private void processFile(File file) {
        // 파일 처리 로직 구현
    }
}

5.2 파일 복사 유틸리티

public class FileCopyUtility {
    public void copyFile(File source, File destination) throws IOException {
        if (!source.exists()) {
            throw new FileNotFoundException("Source file not found");
        }
        
        if (!destination.getParentFile().exists()) {
            destination.getParentFile().mkdirs();
        }
        
        try (FileInputStream fis = new FileInputStream(source);
             FileOutputStream fos = new FileOutputStream(destination)) {
            
            byte[] buffer = new byte[8192];
            int length;
            while ((length = fis.read(buffer)) > 0) {
                fos.write(buffer, 0, length);
            }
        }
    }
}

Java의 File 클래스에 대해 자세히 정리하고 요약해드리겠습니다.

Java File Class 종합 가이드

1. File 클래스 개요

1.1 기본 정의

import java.io.File;

public class FileBasics {
    public void createFile() {
        // File 객체 생성
        File file = new File("example.txt");
        File directory = new File("myDirectory");
    }
}

1.2 주요 생성자

public class FileConstructors {
    public void demonstrateConstructors() {
        // 문자열 경로로 생성
        File file1 = new File("test.txt");
        
        // 부모 경로와 자식 경로로 생성
        File file2 = new File("myDir", "test.txt");
        
        // File 객체와 하위 경로로 생성
        File parent = new File("myDir");
        File file3 = new File(parent, "test.txt");
    }
}

2. 파일 정보 확인 메소드

2.1 기본 정보 조회

public class FileInfo {
    public void getFileInfo(File file) {
        // 파일 존재 여부
        boolean exists = file.exists();
        
        // 파일 이름
        String name = file.getName();
        
        // 파일 경로
        String path = file.getPath();
        String absolutePath = file.getAbsolutePath();
        
        // 파일 크기
        long size = file.length();
        
        // 최종 수정 시간
        long lastModified = file.lastModified();
    }
}

2.2 파일 속성 확인

public class FileAttributes {
    public void checkAttributes(File file) {
        // 읽기/쓰기/실행 권한
        boolean canRead = file.canRead();
        boolean canWrite = file.canWrite();
        boolean canExecute = file.canExecute();
        
        // 파일/디렉토리 여부
        boolean isFile = file.isFile();
        boolean isDirectory = file.isDirectory();
        
        // 숨김 파일 여부
        boolean isHidden = file.isHidden();
    }
}

3. 파일 조작 메소드

3.1 파일 생성 및 삭제

public class FileOperations {
    public void manipulateFile() throws IOException {
        File file = new File("newFile.txt");
        
        // 파일 생성
        boolean created = file.createNewFile();
        
        // 파일 삭제
        boolean deleted = file.delete();
        
        // 프로그램 종료 시 삭제
        file.deleteOnExit();
    }
}

3.2 디렉토리 조작

public class DirectoryOperations {
    public void manipulateDirectory() {
        File dir = new File("newDir");
        
        // 디렉토리 생성
        boolean created = dir.mkdir();
        
        // 여러 단계의 디렉토리 생성
        boolean createdMultiple = dir.mkdirs();
        
        // 디렉토리 내용 조회
        String[] contents = dir.list();
        File[] files = dir.listFiles();
    }
}

4. 파일 필터링

4.1 FilenameFilter 사용

public class FileFiltering {
    public void filterFiles() {
        File dir = new File("myDir");
        
        // 파일 이름으로 필터링
        String[] txtFiles = dir.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".txt");
            }
        });
        
        // Lambda 표현식 사용
        String[] pdfFiles = dir.list((dir1, name) -> name.endsWith(".pdf"));
    }
}

4.2 FileFilter 사용

public class AdvancedFiltering {
    public void filterWithFileFilter() {
        File dir = new File("myDir");
        
        // FileFilter를 사용한 필터링
        File[] largeFiles = dir.listFiles(new FileFilter() {
            @Override
            public boolean accept(File file) {
                return file.length() > 1000000; // 1MB 이상
            }
        });
        
        // Lambda 표현식 사용
        File[] recentFiles = dir.listFiles(file -> 
            System.currentTimeMillis() - file.lastModified() < 24 * 60 * 60 * 1000);
    }
}

5. 실전 활용 예제

5.1 재귀적 디렉토리 탐색

public class RecursiveFileSearch {
    public void searchDirectory(File directory) {
        if (directory.exists() && directory.isDirectory()) {
            File[] files = directory.listFiles();
            if (files != null) {
                for (File file : files) {
                    if (file.isDirectory()) {
                        searchDirectory(file);
                    } else {
                        // 파일 처리 로직
                        processFile(file);
                    }
                }
            }
        }
    }
    
    private void processFile(File file) {
        // 파일 처리 로직 구현
    }
}

5.2 파일 복사 유틸리티

public class FileCopyUtility {
    public void copyFile(File source, File destination) throws IOException {
        if (!source.exists()) {
            throw new FileNotFoundException("Source file not found");
        }
        
        if (!destination.getParentFile().exists()) {
            destination.getParentFile().mkdirs();
        }
        
        try (FileInputStream fis = new FileInputStream(source);
             FileOutputStream fos = new FileOutputStream(destination)) {
            
            byte[] buffer = new byte[8192];
            int length;
            while ((length = fis.read(buffer)) > 0) {
                fos.write(buffer, 0, length);
            }
        }
    }
}

핵심 요약

  1. File 클래스의 주요 기능
  • 파일 및 디렉토리 생성, 삭제, 조회
  • 파일 정보(크기, 권한, 수정 시간 등) 확인
  • 디렉토리 내용 조회 및 필터링
  • 경로 조작 및 관리
  1. 주요 메소드
  • exists(): 파일 존재 여부 확인
  • createNewFile(): 새 파일 생성
  • mkdir()/mkdirs(): 디렉토리 생성
  • delete(): 파일/디렉토리 삭제
  • list()/listFiles(): 디렉토리 내용 조회
  1. 실무 활용
  • 파일 시스템 관리
  • 임시 파일 처리
  • 로그 파일 관리
  • 설정 파일 처리
  • 디렉토리 구조 관리
  1. 주의사항
  • 파일 존재 여부 항상 확인
  • 적절한 예외 처리
  • 리소스 해제 관리
  • 권한 확인

이러한 File 클래스의 기능을 적절히 활용하면 효율적인 파일 시스템 관리가 가능합니다.

0개의 댓글