Странное поведение при просмотре содержимого каталога с использованием Java.io.File - PullRequest
1 голос
/ 16 октября 2010

( фон )
Я использую Java.io.File для поиска в каталоге Windows. Обычно пользователь вводит путь к каталогу, и я проверяю путь с помощью file.isDirectory(). Если путь неверен, я прошу пользователя повторно ввести правильный путь. Получив действительный каталог, я продолжаю другие операции с файлами.

( проблема )
Теперь проблема возникает, когда пользователь входит в корневой каталог. Например, e:. В этом случае file.list() обеспечивает следующий вывод [.classpath, .project, .settings, bin, src].
Как вы можете видеть, это не включает никаких папок.

Однако, если он вводит e:\, то file.list() извлекает также существующие каталоги [$RECYCLE.BIN, <some directories>, <some files>, RECYCLER, System Volume Information]

На этот раз у нас нет classpath, проекта и т. Д., Но оба e: и e:\ считаются действительными каталогами.

1) Может кто-нибудь объяснить это странное поведение?

2) Кроме того, чтобы избежать этой проблемы, есть лучший способ, чем добавить грязную ручную проверку для x: и преобразовать ее в x:\?

Ответы [ 3 ]

3 голосов
/ 21 июня 2011

e: отобразит каталог CURRENT в e: drive

e: \ выведет каталог ROOT в e: drive

Попробуйте это:

cd c:\windows\system32

dir c:
dir c:.
dir c:\

"c:" совпадает с "c:."

3 голосов
/ 16 октября 2010

Я ожидаю, что что-то интерпретирует "e:" как текущий каталог тома e: (который не может быть корневым). Раймонд Чен недавно осветил историю подобных вещей.

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

Прежде всего, папки .settings, bin и src ARE.
Во-вторых, есть ли у вас эти файлы (.classpath, .project и т. Д.) На диске e:?

Я предполагаю, что java неправильно анализирует "e:", а file.list () выдает список файлов в текущей папке jvm, которая является папкой, в которой находятся файлы проекта eclipse (Все те файлы и папки, которые вы упомянули, принадлежат проекту eclipse).

Попробуйте открыть окно командной строки. На моей машине это открывается в c: \ Windows \ System32. Затем напечатайте "cd c:" и посмотрите, что получится ...

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