Java 文件mkdirs()未按预期工作
我目前正在尝试测试目录是否存在,如果不存在,我希望程序创建在Java 文件mkdirs()未按预期工作,java,Java,我目前正在尝试测试目录是否存在,如果不存在,我希望程序创建在reportPath中指定的完整目录。当我运行代码时,mkdirs()返回false,并且未创建在reportPath中指定的目录。如果路径不存在,是否mkdirs()生成整个路径 目前正在使用以下代码: String reportPath = outputFile+"\\"+providerName+"\\"+testMode+"\\";//+testTarget+"\\"; File dir = new File(reportPat
reportPath
中指定的完整目录。当我运行代码时,mkdirs()
返回false,并且未创建在reportPath
中指定的目录。如果路径不存在,是否mkdirs()
生成整个路径
目前正在使用以下代码:
String reportPath = outputFile+"\\"+providerName+"\\"+testMode+"\\";//+testTarget+"\\";
File dir = new File(reportPath);
if (!dir.exists()) {
System.out.println("Report Directory does not exist");
System.out.println("Directory created:" + dir.mkdirs());
}
PrintWriter writer = new PrintWriter(reportPath+fileName, "UTF-8");
int id = 1;
writer.println("ID,Provider,Key Type,Key Size,Operation,Parameters,Data Size,Passed,Error details");
for (TestResult r : results) {
writer.println(Integer.toString(id) + "," + r.provider + "," + r.keyType + "," + r.keySize + "," + r.operation + "," + r.parameter + "," + r.dataSize + "," + r.passed + "," + r.errorDetails);
id++;
}
writer.close();
当我运行它时,会出现以下错误:
java.io.FileNotFoundException: <path> (Access is denied)
at java.io.FileOutputStream.open0(Native Method)
(followed by a long list of errors)
java.io.FileNotFoundException:(访问被拒绝)
位于java.io.FileOutputStream.open0(本机方法)
(后面是一长串错误)
java.io.File已过时。请使用以下选项:
大多数java.io.File方法只返回一个布尔值,而不告诉您出了什么问题。文件的方法
如果返回总是成功的;如果失败,他们会抛出一个信息丰富且有用的异常。你说:
权限似乎不错
外表可能是骗人的
发生“访问被拒绝”是因为操作系统不允许您访问/创建/写入文件或目录。您可以假设它这样做只是因为您的请求违反了访问控制规则
以下是一些可能性
摘要:权限/访问控制有问题,这就是问题所在。您没有在“dir”路径中创建目录的权限请参见答案,权限似乎很好。发帖前查看了一下,注意
FileNotFoundException
并不是最“特殊”的异常。您是否可以打印reportPath
以查看其外观。您的代码是否打印了创建的目录:false
?您的reportPath
以“outputFile”(String reportPath=outputFile+“\\”…
)开头。听起来很可疑,第一级目录是一个文件,可能已经存在。如果同名文件已存在,则无法创建目录。你检查过了吗?异常保存文件java.nio.file.NoSuchFileException:是我从it@PUG查看异常的堆栈跟踪。哪个方法引发了该异常?
Path dir = Paths.get(outputFile, providerName, testMode);
Files.createDirectories(dir);
PrintWriter writer = new PrintWriter(Files.newBufferedWriter(dir.resolve(fileName)));