这实际上不是一个问题,但我需要解释。我试图在 C://驱动器下创建目录。所以;
try {
File f_paz = new File("c://Ekap_Pazarlik_xml" + file_currentDate + "//");
File parent_z = f_paz.getParentFile();
if (null != parent_z) {
parent_z.mkdirs();
}
if (!f_paz.exists()) {
f_paz.createNewFile();
}
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
我尝试过,但它给了我“访问被拒绝”错误,所以我尝试了网络上的所有解决方案。什么也没发生。
奇怪的是,我决定在后面加上“空格”;
File f_paz = new File("c://Ekap_Pazarlik_xml" + file_currentDate + "// ");
here
就在“//”
之后,它起作用了。我能够像这样创建目录。我不知道为什么会这样。请给我一些解释。谢谢!
最佳答案
f_paz.createNewFile();
将尝试创建一个新文件,而不是目录。许多Windows系统不允许您直接在C:
中创建文件这就是为什么你会得到异常(exception)。
由于您要创建目录而不是文件,请使用 f_paz.mkdir();
反而。您不需要"//"
最后,顺便说一句。
如果添加空格,即使用路径 "C:/Ekap_xxx/ "
会发生什么?系统将看到一个带有空白文件名的路径 " "
和父目录名称 "Ekap_xxx"
。现在parent_z
将引用"C:/Ekap_xxx"
因此parent_z.mkdirs();
将创建目录"Ekap_xxx"
。现在f_paz.exists()
将返回 true,因为文件系统似乎决定名称无效的文件仍然存在(我必须查找一些有关原因的信息,它隐藏在 native 代码中)。
关于java - 在根目录下创建文件,奇怪的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36470208/