在根目录下创建文件,奇怪的响应

时间:2016-04-07 08:05:05

标签: java file

这实际上不是一个问题,但我需要解释。我试图在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 

"// "之后,它起作用了。我能够像那样创建目录。我不知道为什么它会这样。请给我一些解释。谢谢!

1 个答案:

答案 0 :(得分:2)

f_paz.createNewFile();将尝试创建新文件,而不是目录。许多Windows系统都不允许您直接在C:中创建文件,这就是您获得例外的原因。

由于您要创建目录而不是文件,请改用f_paz.mkdir();。最后,你不需要"//",顺便说一句。

如果添加空格会发生什么,即使用路径"C:/Ekap_xxx/ "?系统将看到一个空白文件名为" "且父目录名为"Ekap_xxx"的路径。现在parent_z将引用"C:/Ekap_xxx",因此parent_z.mkdirs();将创建目录"Ekap_xxx"。现在f_paz.exists()将返回true,因为文件系统似乎仍然确定存在名称无效的文件(我必须查找有关原因的一些信息,它隐藏在本机中码)。