에서 File
클래스가 두 개의 문자열이있다, separator
하고 pathSeparator
.
차이점이 뭐야? 언제 다른 것을 사용해야합니까?
에서 File
클래스가 두 개의 문자열이있다, separator
하고 pathSeparator
.
차이점이 뭐야? 언제 다른 것을 사용해야합니까?
답변:
당신이 의미하는 경우 File.separator
와 File.pathSeparator
다음 :
File.pathSeparator
파일 경로 목록에서 개별 파일 경로를 구분하는 데 사용됩니다. Windows에서 PATH 환경 변수를 고려하십시오. ;
Windows에서는 파일 경로를 구분하기 위해 a 를 사용 File.pathSeparator
합니다 ;
.
File.separator
중입니다 /
또는 \
그 특정 파일의 경로를 분할하는 데 사용됩니다. 예를 들어 Windows에서는 \
또는C:\Documents\Test
File.separator
해야한다 File.fileSeparator
에 관한File.pathSeparator
File
. 파일 부분이 암시되어 있다고 생각합니다. 그러나 누가 왜 Java로 많은 일을했는지 알고 있습니다.
파일 경로를 만들 때 구분 기호를 사용합니다. 유닉스에서 구분 기호는 /
입니다. 따라서 유닉스 경로를 만들고 /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);
/var/temp
사용하는 것이 쓸모가 File.separator
없습니다. 경로를 하드 코딩 할 수도 있습니다.
java.io.File
클래스에는 4 개의 정적 분리 자 변수가 있습니다. 더 나은 이해를 위해 일부 코드의 도움으로 이해합시다
이들 모두는 최종 변수이며 시스템에 따라 다릅니다.
다음은 이러한 구분 기호 변수를 인쇄하는 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");
String
및 char
상기 방법에 의해 반환은 (Windows의 경우) 올바른 형식의 백 슬래시를 반환 않습니다.