gpt4 book ai didi

java - 文件 mkdirs() 未按预期工作

转载 作者:行者123 更新时间:2023-12-01 19:54:05 25 4
gpt4 key购买 nike

我当前正在尝试测试目录是否存在,如果不存在,我希望程序创建在 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)

最佳答案

你说:

permissions seem good

外表可能具有欺骗性!

发生“访问被拒绝”是因为操作系统不允许您访问/创建/写入文件或目录。您可以假设它这样做只是因为您的请求的某些内容违反了访问控制规则。

以下是一些可能性。

  1. 您正在使用的路径可能引用了您认为的其他文件或目录;例如它可能是相对路径,并且当前目录不是您想象的那样,或者路径名可能有错误(拼写、区分大小写等)

  2. 应用程序可能未以正确的用户身份运行。或者在 Windows 上,它可能没有管理员权限(如果需要的话)。或者用户可能不在正确的组中(在 UNIX/Linux 上......)

  3. 权限可能与您想象的不同。你检查过组权限吗?您检查过 ACL 吗?您是否检查了路径中的所有目录...从文件系统根目录开始?

  4. 在 Linux 上,这可能与 SELinux、AppArmor、在 Docker 容器中运行或类似的东西有关。

  5. 如果您尝试在本地安装的远程文件系统上创建目录,可能是由于本地和远程身份系统之间不匹配。

  6. 如果您尝试使用 GPFS/AFM 缓存、NFS 身份映射等......

<小时/>

摘要:权限/访问控制出了点问题,这就是问题所在。

关于java - 文件 mkdirs() 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50207421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com