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

标签 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 

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

最佳答案

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/

相关文章:

Java zip 附加行

java - 在 Nattable OverlayPainter 中绘制动画

java - MapReduce 中的动态表达式

c# - 编辑 M4V 视频元数据

python - 有没有更快的方法来解析这个文本文件?

java - 在 singletonlist 中发送 elementcollection

java - 打印哈希表内的多值数据

python - 对多个文件使用一个函数

linux - bash:一次从字符串中读取一个字符

java - 向 HttpServletRequest 添加额外参数