сомнение в названии файла - PullRequest
2 голосов
/ 18 октября 2010

в чем разница ч / б абстрактного пути и строки пути.Я столкнулся с этими двумя, когда я читал о разделитель строк

Ответы [ 5 ]

2 голосов
/ 18 октября 2010

Помните, что на * nix обратная косая черта (\) является допустимым символом в имени файла, но не в Windows.

Запустите это в Windows и * nix и сравните распечатки:

File f1 = new File("c:\\somepath\\somefile.txt");
System.out.println(f1.getName()); 
File f2 = new File("c:/somepath/somefile.txt");
System.out.println(f2.getName()); 

На обоих вариантах печати печатается somefile.txt, а на * nix первый вариант печатает

c:\somepath\somefile.txt

второй вариант печати somefile.txt

Таким образом, использование / более «безопасно». (Обнаружено это при загрузке файла из клиента Windows на сервер Solaris и попытке извлечь только имя файла.)

1 голос
/ 18 октября 2010

Абстрактное имя пути состоит из двух компонентов:

  1. Необязательная системно-зависимая префиксная строка, такая как спецификатор дискового накопителя, "/" для корневого каталога UNIX или "\\" для пути Microsoft Windows UNC и
  2. Последовательность из нуля или более имен строк.

Вот как Java внутренне представляет путь к ресурсам независимым от ОС образом.

Путь - это читаемое представление этой абстракции, а также то, что вы можете ввести в свой терминал ОС для доступа к этому файлу, т. Е.

C: \ бла \ blah.txt

1 голос
/ 18 октября 2010

В чем разница ч / б абстрактного пути и строки пути?

Абстрактное имя пути - это, в основном, обычное имя пути, представленное независимым от ОС образом, в то время как строка пути является просто (возможно, системно-зависимой) строкой, представляющей имя пути.

Документация для файла более подробно описывает это:

Абстрактное имя пути состоит из двух компонентов:

  1. Необязательная системно-зависимая префиксная строка, такая как спецификатор дисковода, "/" для корневого каталога UNIX или "\" для пути Microsoft Windows UNC и

  2. Последовательность из нуля или более имен строк.

Например, абстрактная версия строки пути

"/home/aioobe/tmp/test.txt"

состоит из этих двух частей:

  1. Префикс: "/"
  2. Список имен строк
    1. "home" * * 1045
    2. "aioobe"
    3. "tmp"
    4. "test.txt"
1 голос
/ 18 октября 2010

Строки пути используются для имен файлов и каталогов в различных операционных системах. Они варьируются от ОС к ОС. Например, в Linux это: /home/user/a.java, а в Windows: c:\dev\a.java

Итак, когда говорится, что строка пути преобразована в абстрактный путь, это означает, что строка пути теперь не зависит от ОС.

Например:

File path = File("/home/user/a.java")

Преобразует зависимый от Linux путь к файлу в понятный JVM-путь к файлу (path объект в приведенном выше примере), который называется абстрактным путем.

Полагаю, вы читали это , но лучший способ понять это - реализовать простой 5-строчный Java-код и посмотреть, какие опции вы получите с классом File.

1 голос
/ 18 октября 2010

Это зависит от системы, в которой вы запускали свою JVM.Например, Windows и Linux нуждаются в различном разделителе слеша (вперед / назад).Это значение separatorChar в классе файлов.Абстрактное имя пути не зависит от системы.Этот путь используется внутри класса файлов.@see Конструктор файлов doc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...