파일과 바이트 배열 상호 변환
파일을 바이트 배열로 읽거나 바이트 데이터를 파일로 저장하는 유틸리티 클래스:
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);
}
}