我写了一些代码来在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
。
答案 0 :(得分:1)
根据文档,只有在抛出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 (...)
答案 1 :(得分:1)
我没有在MS Window OS中运行你的代码,但我不确定c:\ Users~是否等同于Java中的/ Users~。
如果您确定它没有进入您的异常处理部分,那意味着Java创建文件位于磁盘中的某个位置,而不是在C:\ Users \ Juan Manuel \ Clientes下。 尝试打印“文件夹”文件路径的绝对路径,看看它是否已经存在。
所以在catch语句中。做e.printStackTrace();如果您的程序调用createFolders()不打印返回字符串,则首先而不是返回错误消息。检查e.toString()有时并不能完全找出根本原因。
另外,尝试使用正确的文件创建,如Boris所提到的,我知道你的调用会起作用(因为我也使用它),但是使用File(path,filename);更明确,更不容易出错。
最后,检查文件类'JavaDoc http://docs.oracle.com/javase/7/docs/api/java/io/File.html#File(java.lang.String)
当给定路径为空时它将返回NPE,但是对于其他情况它不会返回异常。