Файл.разделитель против файла.pathSeparator [дубликат]
этот вопрос уже есть ответ здесь:
- .разделитель или файл.pathSeparator 3 ответы
файл имеет статические строки разделитель и pathSeparator. Разделитель является "символом разделителя имен по умолчанию" , а pathSeparator- " разделителем путей характер."
в чем разница? Есть ли время, когда одно предпочтительнее другого?
1 ответов
java.Ио.Класс File содержит четыре статические переменные-разделителя. Для лучшего понимания давайте разберемся с помощью некоторого кода
- separator: зависящее от платформы имя по умолчанию-символ разделителя как строка. Для windows это'\‘, а для unix это’/'
- separatorChar: то же, что и разделитель, но это char
- pathSeparator: зависимая от платформы переменная для path-separator. Для пример PATH или CLASSPATH список переменных путей, разделенных ‘:’ в Системы Unix и‘; " в системе 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);
}
}
вывод вышеуказанной программы на систему Unix:
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");