我刚刚在阅读一本Java书籍,并练习了一些小程序。我创建了一个小代码来获取我输入的路径信息,代码如下:
String path = JOptionPane.showInputDialog("Enter Path to analyze");
File file = new File(path);
if (file.exists())
{
String result = "";
if (file.isDirectory())
{
result += "Path is directory\n ";
String [] resList = file.list();
for (String s : resList)
{
result += s + ", ";
}
}
if (file.isFile())
{
result += "Path is a file\n";
}
JOptionPane.showMessageDialog(null, result);
现在在输入对话框中,当我输入
C:
时,结果是 build, build.xml, manifest.mf, nbproject, src
,但当我输入 C:/ 时,它显示了 C 目录中完整的目录和文件列表。而奇怪的是,在 D 和其他驱动器上不会发生这种情况(即 D:/ 和 D: 的结果相同),请解释一下发生了什么?更新: 在使用 C# 的 WPF 中也是如此。
/
还是\\
。 - Niklas B.C:
与D:
的处理方式不同很奇怪。无论你是否使用正斜杠,在这里都非常不相关。 - Niklas B.File
API将会自动将正斜杠转换为反斜杠而不发出任何警告。请查看被java.io.File
构造函数调用的java.io.Win32FileSystem#normalize()
方法。但是在Windows本身中(例如在命令提示符中),前斜杠并不能被识别为导航文件夹的路径。 - BalusCC:
意味着 当前工作目录在 C 盘,而C:\
则意味着 C 盘的根目录。 - Marko Topolnik