Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java.io.File列出目录内容时的奇怪行为_Java_File Io - Fatal编程技术网

使用Java.io.File列出目录内容时的奇怪行为

使用Java.io.File列出目录内容时的奇怪行为,java,file-io,Java,File Io,(背景) 我正在使用Java.io.File执行一些windows目录搜索。基本上,用户输入一个目录路径,我用file.isDirectory()验证路径。如果路径无效,我会要求用户重新输入正确的路径。一旦我得到一个有效的目录,我将继续进行其他文件操作 (问题) 现在,当用户进入根目录时,问题就出现了。例如,e:。在本例中,file.list()提供以下输出[.classpath、.project、.settings、bin、src]如您所见,这不包括任何文件夹 但是,如果他输入e:\,则fil

(背景)
我正在使用
Java.io.File
执行一些windows目录搜索。基本上,用户输入一个目录路径,我用
file.isDirectory()
验证路径。如果路径无效,我会要求用户重新输入正确的路径。一旦我得到一个有效的目录,我将继续进行其他文件操作

(问题)

现在,当用户进入根目录时,问题就出现了。例如,
e:
。在本例中,
file.list()
提供以下输出
[.classpath、.project、.settings、bin、src]

如您所见,这不包括任何文件夹

但是,如果他输入
e:\
,则
file.list()
也会获取现有目录
[$RECYCLE.BIN,,RECYCLER,System Volume Information]

这次我们没有类路径、项目等,但是
e:
e:\
都被认为是有效的目录

1) 有人能解释这种奇怪的行为吗?


2) 另外,为了避免这个问题,有没有比为
x:
添加脏的手动检查并将其转换为
x:\

更好的方法呢?

我希望有人会将
“e:
解释为卷e:的当前目录(可能不是根目录)。雷蒙德·陈(Raymond Chen)就是这种类型的人。

我希望有人会将
“e:
解释为e:卷的当前目录(可能不是根目录)。Raymond Chen就是这样的人。

首先,
.settings
bin
src
都是文件夹。
其次,在驱动器e:中是否确实有这些文件(.classpath、.project等)

我的猜测是,java没有正确解析“e:”,file.list()会给出jvm当前文件夹下的文件列表,该文件夹恰好是eclipse项目文件所在的文件夹(您提到的所有文件和文件夹都属于eclipse项目)


尝试打开命令行窗口。在我的计算机上,它在c:\Windows\System32打开。然后键入“cd c:”并查看发生了什么…

首先,
。设置
bin
src
是文件夹。
其次,在驱动器e:中是否确实有这些文件(.classpath、.project等)

我的猜测是,java没有正确解析“e:”,file.list()会给出jvm当前文件夹下的文件列表,该文件夹恰好是eclipse项目文件所在的文件夹(您提到的所有文件和文件夹都属于eclipse项目)

尝试打开命令行窗口。在我的计算机上,它在c:\Windows\System32打开。然后键入“cd c:”并查看发生了什么…

e:将在e:驱动器中列出当前目录

e:\将在e:驱动器中列出根目录

试试这个:

cd c:\windows\system32

dir c:
dir c:.
dir c:\
“c:”与“c:”相同。

e:将列出e:驱动器中的当前目录

e:\将在e:驱动器中列出根目录

试试这个:

cd c:\windows\system32

dir c:
dir c:.
dir c:\

“c:”与“c:”相同。

我检查了e驱动器,但那些文件夹不存在。此外,我还尝试打开命令提示符。对我来说,它在c:\users\\打开。在我输入“cd c:”后,它保持不变。我正在使用Windows7。(您可能正在使用windows xp)…classpath、.project、.settings、bin、src听起来像eclipse项目中的文件。
CD C:
没有任何作用,因为
C:
不是目录。这是一次驾车旅行。在cmd.exe帮助中:键入CD驱动器:以显示指定驱动器中的当前目录。键入不带参数的CD以显示当前驱动器和目录。@McDowell,感谢您的澄清。无论如何,我用cd只是为了说明一点。最后是关于Java当前的folder@Skip是的。这是一个eclipse项目。然而,我不认为这与这件事有直接关系。甚至可以从基本命令提示符运行它来实现输出。有点恼人的是,
File
接受
c:
作为目录,即使它是一个驱动器。我只是在想,是否有比手动添加检查更好的方法来查看用户是否没有输入此内容。我检查了e drive,但这些文件夹不存在。此外,我还尝试打开命令提示符。对我来说,它在c:\users\\打开。在我输入“cd c:”后,它保持不变。我正在使用Windows7。(您可能正在使用windows xp)…classpath、.project、.settings、bin、src听起来像eclipse项目中的文件。
CD C:
没有任何作用,因为
C:
不是目录。这是一次驾车旅行。在cmd.exe帮助中:键入CD驱动器:以显示指定驱动器中的当前目录。键入不带参数的CD以显示当前驱动器和目录。@McDowell,感谢您的澄清。无论如何,我用cd只是为了说明一点。最后是关于Java当前的folder@Skip是的。这是一个eclipse项目。然而,我不认为这与这件事有直接关系。甚至可以从基本命令提示符运行它来实现输出。有点恼人的是,
File
接受
c:
作为目录,即使它是一个驱动器。我只是在想,是否有什么比手动添加支票更好的方法来查看用户没有输入这个。似乎没有人可以解释这一点?请有人也回复2好吗?谢谢。好像没人能解释这件事?请有人也回复2好吗?谢谢,啊!这毕竟是一个窗户的东西。c:和c:\Ah的结果之间存在差异!这毕竟是一个窗户的东西。c:和c:的结果之间存在差异:\