Файл.разделитель против файла.pathSeparator [дубликат]

этот вопрос уже есть ответ здесь:

  • .разделитель или файл.pathSeparator 3 ответы

файл имеет статические строки разделитель и pathSeparator. Разделитель является "символом разделителя имен по умолчанию" , а pathSeparator- " разделителем путей характер."

в чем разница? Есть ли время, когда одно предпочтительнее другого?

1 ответов


java.Ио.Класс File содержит четыре статические переменные-разделителя. Для лучшего понимания давайте разберемся с помощью некоторого кода

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

}

вывод вышеуказанной программы на систему 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");