자바 파일 처리 유틸리티

파일과 바이트 배열 상호 변환

파일을 바이트 배열로 읽거나 바이트 데이터를 파일로 저장하는 유틸리티 클래스:


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.file.*;

public class DataConverter {
    private static final Logger logger = LoggerFactory.getLogger(DataConverter.class);

    public static byte[] convertToBytes(Path source) {
        try {
            return Files.readAllBytes(source);
        } catch (Exception e) {
            logger.error("파일 읽기 실패: {}", e.getMessage());
            return null;
        }
    }

    public static void saveBytesToFile(byte[] data, Path destination) {
        try {
            Files.createDirectories(destination.getParent());
            Files.write(destination, data);
        } catch (Exception e) {
            logger.error("파일 저장 실패: {}", e.getMessage());
        }
    }
}

디렉토리 내 전체 파일 목록 조회

재귀적 방식으로 하위 디렉토리를 포함한 모든 파일 경로 수집:


import java.util.*;
import java.nio.file.*;

public class FileScanner {
    public static List<String> scanAllFiles(Path startDir) {
        List<String> results = new ArrayList<>();
        scanRecursively(startDir, results);
        return results;
    }

    private static void scanRecursively(Path current, List<String> collector) {
        try (DirectoryStream<Path> stream = Files.newDirectoryStream(current)) {
            for (Path entry : stream) {
                if (Files.isDirectory(entry)) {
                    scanRecursively(entry, collector);
                } else {
                    collector.add(entry.toString());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

디렉토리 전체 삭제

하위 항목을 포함한 디렉토리 삭제 유틸리티:


import java.nio.file.*;

public class DirectoryCleaner {
    public static boolean removeAll(Path target) throws Exception {
        if (!Files.exists(target)) return true;
        
        Files.walkFileTree(target, new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                Files.delete(file);
                return FileVisitResult.CONTINUE;
            }
            
            @Override
            public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
                Files.delete(dir);
                return FileVisitResult.CONTINUE;
            }
        });
        return !Files.exists(target);
    }
}

파일 복사 유틸리티

대상 경로 생성 및 파일 복사 수행:


import java.nio.file.*;

public class FileReplicator {
    public static void duplicateFile(Path source, Path targetDir, String newName) throws Exception {
        Path destination = targetDir.resolve(newName);
        Files.createDirectories(targetDir);
        Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING);
    }
}

태그: JavaIO 파일처리 NIO 바이트처리 디렉토리관리

7월 5일 23:36에 게시됨