[英]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.