Java의 파일 관리?
2024.06.05 - [공부한 기록/Programming Language] - Java - 스트림 Stream (2)
이전에 작성한 글의 연장선인데, 입출력 스트림에 대한 내용이었다. 이런 입출력 스트림은 파일이나 장치를 읽거나 쓰기 위해 사용하는데 파일 자체의 관리 기능은 제공하지 않는다.
Java에서는 이러한 필요를 충족시키기 위해 File 클래스를 제공한다.
File 클래스
java.io 패키지에 포함된, 파일이나 폴더 경로를 추상화한 클래스다. 생성자는 다음과 같다.
File(String pathname) | 주어진 경로 문자열을 추상 경로명으로 변환하여 새로운 File 인스턴스를 생성합니다. |
File(File parent, String child) | 부모 추상 경로명과 자식 경로명 문자열을 조합하여 새로운 File 인스턴스를 생성합니다. 다시 말해, parent 폴더 아래 child라는 File 객체를 생성합니다. |
File 클래스의 간단한 예제를 보자.
windows 폴더 아래 있는 파일과 자식 폴더를 전부 출력한다.
public static void main(String[] args) throws IOException {
File file = new File("C:\\Windows");
File[] fs = file.listFiles();
for (File f : fs)
if (f.isDirectory())
System.out.printf("dir : %s\n", f);
else
System.out.printf("file: %s(%d bytes)\n", f, f.length());
Path 인터페이스
2024.05.17 - [IT&Programming/Error fix] - FileNotFoundException
File 클래스의 문제점은 특정 운영체제에 종속적이라는 것이다. 예를 들어, 리눅스 커널의 어떤 OS에서는 /home/joe/foo와 같은 경로를 사용하고, Windows에서는 C:homejoefoo와 같은 경로를 사용한다. 이로 인해 코드가 특정 운영체제에서는 잘 동작하더라도 다른 운영체제에서는 문제가 발생할 수 있다.
Path 인터페이스는 이러한 문제를 해결하기 위해 도입되었다. Path 인터페이스는 파일 경로를 추상적으로 표현하며, 특정 운영체제에 종속되지 않는다. 따라서 Path를 사용하면 플랫폼 간에 일관성 있는 파일 경로를 다룰 수 있다고 한다.
기존 File 객체도 File 클래스의 toPath( ) 메서드를 이용해 Path 타입으로 변환 가능!
public static void main(String[] args) {
Path subPath = Paths.get("subfolder\\subfile.txt");
Path resolvedPath = filePath.resolve(subPath);
System.out.println("Resolved path: " + resolvedPath);
}
728x90
반응형
'기록 > Programming Language' 카테고리의 다른 글
Java - GUI (0) | 2024.06.06 |
---|---|
Java - 스트림 Stream (2) (1) | 2024.06.05 |
Java - 스트림 Stream (0) | 2024.04.24 |
Java - 컬렉션 프레임워크 Collection Framework (0) | 2024.04.20 |
Java - 람다식과 함수형 인터페이스(Predicate, Consumer, Supplier, Function, Operator) (0) | 2024.04.17 |