자바 파일 경로, 절대 경로 및 정규 경로

오늘은 Java 파일 경로를 살펴보겠습니다. Java 파일 경로는 추상적일 수도 있고, 절대적일 수도 있으며, 정규적일 수도 있습니다.

Java 파일 경로

java.io.File에는 파일 경로를 결정하는 세 가지 메서드가 있습니다. 이 튜토리얼에서는 이를 살펴보겠습니다.

  1. getPath(): 이 파일 경로 메서드는 추상 경로 이름을 문자열로 반환합니다. 문자열 경로명이 File을 생성하는 데 사용된 경우에는 단순히 경로명 인수를 반환합니다. URI가 인수로 사용되면 프로토콜을 제거하고 파일 이름을 반환합니다.
  2. getAbsolutePath(): 이 파일 경로 메서드는 파일의 절대 경로를 반환합니다. 파일이 절대 경로명으로 생성된 경우에는 경로명을 단순히 반환합니다. 파일 객체가 상대 경로를 사용하여 생성된 경우에는 시스템에 따라 절대 경로명이 해결됩니다. UNIX 시스템에서는 상대 경로명이 현재 사용자 디렉토리를 기준으로 해결됩니다. Microsoft Windows 시스템에서는 상대 경로명이 지정된 드라이브의 현재 디렉토리를 기준으로 해결됩니다. 지정된 경우에는 현재 사용자 디렉토리를 기준으로 해결됩니다.
  3. [getCanonicalPath](https://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalPath())(): 이 경로 메서드는 절대이자 고유한 정규 경로를 반환합니다. 이 메서드는 먼저 이 경로명을 필요한 경우에는 getAbsolutePath 메서드를 호출하는 것처럼 절대 형태로 변환한 다음, 시스템에 따라 고유한 형태로 매핑합니다. 이는 일반적으로 경로명에서 “.” 및 “..”과 같은 중복된 이름을 제거하고, 심볼릭 링크를 해결하며(UNIX 플랫폼에서), 드라이브 문자를 표준 케이스로 변환하는 것을 포함합니다(Microsoft Windows 플랫폼에서).

자바 파일 경로 예제

간단한 프로그램으로 자바에서 파일 경로의 다양한 경우를 살펴보겠습니다.

package com.journaldev.files;

import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class JavaFilePath {

	public static void main(String[] args) throws IOException, URISyntaxException {
		File file = new File("/Users/pankaj/test.txt");
		printPaths(file);
		// 상대 경로
		file = new File("test.xsd");
		printPaths(file);
		// 복잡한 상대 경로
		file = new File("/Users/pankaj/../pankaj/test.txt");
		printPaths(file);
		// URI 경로
		file = new File(new URI("file:///Users/pankaj/test.txt"));
		printPaths(file);
	}

	private static void printPaths(File file) throws IOException {
		System.out.println("Absolute Path: " + file.getAbsolutePath());
		System.out.println("Canonical Path: " + file.getCanonicalPath());
		System.out.println("Path: " + file.getPath());
	}

}

아래 이미지는 위의 자바 파일 경로 프로그램이 생성한 출력을 보여줍니다. 출력은 자명합니다. 출력을 기반으로 상대 경로 때문에 발생할 수 있는 문제를 피하기 위해 정규 경로를 사용하는 것이 가장 적합합니다. 또한, 자바 파일 경로 메서드가 파일의 존재 여부를 확인하지 않는다는 것에 유의하십시오. 그들은 파일 객체를 생성할 때 사용한 파일의 경로명에만 작동합니다. 이것으로 자바에서 다양한 유형의 파일 경로에 대한 설명을 마칩니다.

당사의 GitHub 저장소에서 더 많은 자바 IO 예제를 확인하실 수 있습니다.

Source:
https://www.digitalocean.com/community/tutorials/java-file-path-absolute-canonical