簡體   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