에서 File
클래스가 두 개의 문자열이있다, separator
하고 pathSeparator
.
차이점이 뭐야? 언제 다른 것을 사용해야합니까?
답변
당신이 의미하는 경우 File.separator
와 File.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 개의 정적 분리 자 변수가 있습니다. 더 나은 이해를 위해 일부 코드의 도움으로 이해합시다
- separator : 플랫폼에 따른 기본 이름 분리 문자 (문자열)입니다. Windows의 경우 ‘\’이고 유닉스의 경우 ‘/’입니다.
- separatorChar : separator와 동일하지만 char입니다.
- pathSeparator : 경로 분리자를위한 플랫폼 종속 변수. 예를 들어 Unix 시스템에서 ‘:’으로 구분 된 경로의 PATH 또는 CLASSPATH 변수 목록과 ‘;’ Windows 시스템에서
- 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");