почему новый файл ("") не предоставляет существующий каталог? - PullRequest
2 голосов
/ 27 февраля 2011

Я использую Eclipse + Java и пытаюсь создать файлы в рамках моего текущего проекта.Я использовал new File("") и не понимаю его поведение.

File dir = new File("");
System.out.println(dir.getAbsolutePath()+" | "+dir.isDirectory()+" | "+dir.exists());
String absolutePathname = dir.getAbsolutePath();
dir = new File(absolutePathname);
System.out.println(dir.getAbsolutePath()+" | "+dir.isDirectory()+" | "+dir.exists()); 

приводит к:

D:\workspace\jumbo-converters\jumbo-converters-compchem | false | false
D:\workspace\jumbo-converters\jumbo-converters-compchem | true | true

Почему у меня может быть два файла с одинаковым абсолютным путем, один из которых существует, а один - нет?

Я использую Java 1.6 и Eclipse Helios

Ответы [ 2 ]

7 голосов
/ 27 февраля 2011

File dir = new File (""); означает файл с именем «пустая строка» и естественно, этот файл не существует, и это не каталог. Для ссылки на текущий каталог используйте File dir = new File ("."); посмотрите на этот код:

File dir = new File("");
System.out.println(dir.getAbsolutePath()+" | "+dir.isDirectory()+" | "+dir.exists());
System.out.println("file name is: |" + dir.getName() + "|");
String absolutePathname = dir.getAbsolutePath();
dir = new File(absolutePathname);**
System.out.println(dir.getAbsolutePath()+" | "+dir.isDirectory()+" | "+dir.exists());
System.out.println("file name is: |" + dir.getName() + "|");

обратите внимание на другое имя файла:

C:\Program Files (x86)\Java\jdk1.6.0_21\bin | false | false
file name is: ||
C:\Program Files (x86)\Java\jdk1.6.0_21\bin | true | true
file name is: |bin|
3 голосов
/ 27 февраля 2011

Потому что вы задаете следующие вопросы:

  1. Если я получу полный путь "", что это?D:\workspace\jumbo-converters\jumbo-converters-compchem

  2. Является ли "" реальный каталог?No.

  3. Существует ли "" каким-либо образом?No.

  4. Если я получу полный путь к "D: \ workspace \ jumbo-convertters \ jumbo-convertters-compchem", что это?D:\workspace\jumbo-converters\jumbo-converters-compchem

  5. Является ли "D: \ workspace \ jumbo-convertters \ jumbo-convertters-compchem" реальным каталогом?Yes.

  6. Существует ли каким-либо образом "D: \ workspace \ jumbo-convertters \ jumbo-convertters-compchem"?Yes.

Причина, по которой работает # 1, заключается в том, что любой относительный путь (т. Е. Путь, который не начинается с / или диск) можно сделать абсолютным путем его объединенияс текущим каталогом.Итак:

"D:\workspace\jumbo-converters\jumbo-converters-compchem" + "" == "D:\workspace\jumbo-converters\jumbo-converters-compchem"

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