[java] File.separator 또는 File.pathSeparator

에서 File클래스가 두 개의 문자열이있다, separator하고 pathSeparator.

차이점이 뭐야? 언제 다른 것을 사용해야합니까?



답변

당신이 의미하는 경우 File.separatorFile.pathSeparator다음 :

  • File.pathSeparator파일 경로 목록에서 개별 파일 경로를 구분하는 데 사용됩니다. Windows에서 PATH 환경 변수를 고려하십시오. ;Windows에서는 파일 경로를 구분하기 위해 a 를 사용 File.pathSeparator합니다 ;.

  • File.separator중입니다 /또는 \그 특정 파일의 경로를 분할하는 데 사용됩니다. 예를 들어 Windows에서는 \또는C:\Documents\Test


답변

파일 경로를 만들 때 구분 기호를 사용합니다. 유닉스에서 구분 기호는 /입니다. 따라서 유닉스 경로를 만들고 /var/temp싶다면 다음과 같이하십시오 :

String path = File.separator + "var"+ File.separator + "temp"

pathSeparator클래스 경로와 같은 파일 목록을 처리 할 때를 사용합니다 . 예를 들어, 앱에서 jar 목록을 인수로 사용하는 경우 유닉스에서 해당 목록의 형식을 지정하는 표준 방법은 다음과 같습니다./path/to/jar1.jar:/path/to/jar2.jar:/path/to/jar3.jar

따라서 파일 목록이 주어지면 다음과 같이 할 것입니다.

String listOfFiles = ...
String[] filePaths = listOfFiles.split(File.pathSeparator);


답변

java.io.File클래스에는 4 개의 정적 분리 자 변수가 있습니다. 더 나은 이해를 위해 일부 코드의 도움으로 이해합시다

  1. separator : 플랫폼에 따른 기본 이름 분리 문자 (문자열)입니다. Windows의 경우 ‘\’이고 유닉스의 경우 ‘/’입니다.
  2. separatorChar : separator와 동일하지만 char입니다.
  3. pathSeparator : 경로 분리자를위한 플랫폼 종속 변수. 예를 들어 Unix 시스템에서 ‘:’으로 구분 된 경로의 PATH 또는 CLASSPATH 변수 목록과 ‘;’ Windows 시스템에서
  4. pathSeparatorChar : pathSeparator와 동일하지만 char입니다.

이들 모두는 최종 변수이며 시스템에 따라 다릅니다.

다음은 이러한 구분 기호 변수를 인쇄하는 Java 프로그램입니다. FileSeparator.java

import java.io.File;

public class FileSeparator {

    public static void main(String[] args) {
        System.out.println("File.separator = "+File.separator);
        System.out.println("File.separatorChar = "+File.separatorChar);
        System.out.println("File.pathSeparator = "+File.pathSeparator);
        System.out.println("File.pathSeparatorChar = "+File.pathSeparatorChar);
    }

}

유닉스 시스템에서 위 프로그램의 출력 :

File.separator = /
File.separatorChar = /
File.pathSeparator = :
File.pathSeparatorChar = :

Windows 시스템에서 프로그램의 출력 :

File.separator = \
File.separatorChar = \
File.pathSeparator = ;
File.pathSeparatorChar = ;

프로그램 플랫폼을 독립적으로 만들려면 항상 이러한 구분 기호를 사용하여 파일 경로를 만들거나 PATH, CLASSPATH와 같은 시스템 변수를 읽어야합니다.

다음은 구분 기호를 올바르게 사용하는 방법을 보여주는 코드 스 니펫입니다.

//no platform independence, good for Unix systems
File fileUnsafe = new File("tmp/abc.txt");
//platform independent and safe to use across Unix and Windows
File fileSafe = new File("tmp"+File.separator+"abc.txt");


답변