繁体   English   中英

为什么Java mkdirs不能正常工作?

[英]Why isnt Java mkdirs working properly?

我写了一些代码来在Windows下运行的Java应用程序中创建文件夹。 它不是创建文件夹但是不会进入异常。

public static String createFolders(String client) {
    File folder = new File("/Users/Juan Manuel/Clientes/"+client);

    if (!folder.exists()) {

        try {
            folder.mkdirs();
            new File(folder.getPath()+"/IMSS").mkdir();
            new File(folder.getPath()+"/SAT").mkdir();
            new File(folder.getPath()+"/Finanzas").mkdir();
            new File(folder.getPath()+"/Otros").mkdir();
        }
        catch (Exception e) {
            return e.toString();
        }

    }
    return "";
}

我使用返回值检查是否有任何错误,但我得到""返回,所以它至少会通过。

在Explorer的预期根路径中,它显示为C:\\Users\\Juan Manuel\\Clientes

根据文档,只有在抛出SecurityException时才会看到异常。 如果代码由于任何其他原因无法创建文件夹,则代码不会检测到它,因为它会忽略返回代码。

更改您的方法如下,以注意错误:

try {
     if (!folder.mkdirs()) {
         return "root";
     }
     if (!(new File(folder.getPath()+"/IMSS").mkdir())) {
         return "IMSS";
     }
     if (!(new File(folder.getPath()+"/SAT").mkdir())) {
         return "SAT";
     }
     if (!(new File(folder.getPath()+"/Finanzas").mkdir())) {
         return "Finanzas";
     }
     if (!(new File(folder.getPath()+"/Otros").mkdir())) {
         return "Otros";
     }
} catch (...)

我没有在MS Window OS中运行你的代码,但我不确定c:\\ Users~是否等同于Java中的/ Users~。

如果你确定它没有进入你的异常处理部分,那就意味着Java创建文件在磁盘的某个地方,而不是在C:\\ Users \\ Juan Manuel \\ Clientes下。 尝试打印“文件夹”文件路径的绝对路径,看看它是否已经存在。

所以在catch语句中。 做e.printStackTrace(); 如果您的程序调用createFolders()不打印返回字符串,则首先而不是返回错误消息。 检查e.toString()有时不能完全找出根本原因。

另外,尝试使用正确的文件创建,如Boris所提到的,我知道你的调用会起作用(因为我也使用它),但是使用File(path,filename); 更明确,更不容易出错。

最后,检查File类'JavaDoc http://docs.oracle.com/javase/7/docs/api/java/io/File.html#File(java.lang.String)

当给定路径为空时,它将返回NPE,但是对于其他情况,它不会返回异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM