【问题标题】:File works in Java 1.5 but not in Java 7 (java.io.FileNotFoundException Permission Denied)文件在 Java 1.5 中有效,但在 Java 7 中无效(java.io.FileNotFoundException Permission Denied)
【发布时间】:2013-03-26 20:27:19
【问题描述】:

我有一个要访问的文件。当我在 Java 1.5 中访问它时,它很好。我已经升级到 Java 7,现在我收到 java.io.FileNotFoundException Permission Denied 错误。

java.io.FileNotFoundException: /folder/test.xml (Permission denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
at java.io.FileOutputStream.<init>(FileOutputStream.java:104)
at SerializeUtil.write(Unknown Source)

它实际上是在尝试使用 XMLEncoder 写入文件

XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(filename)));
encoder.writeObject(object);
encoder.close();

【问题讨论】:

  • 是否有进程锁定了您的文件?
  • 您绝对确定您有权写入该文件夹?
  • 你的文件名格式是什么?
  • 我认为 java api 的行为不会改变(经过这么多的向后兼容性:))假设它在 java 5 和 java 7 上的代码完全相同,我也认为它可能是一个锁问题。
  • 据我所知,没有任何东西被锁定。

标签: java filenotfoundexception permission-denied


【解决方案1】:

如果你在 Unix/Linux 下,请在你运行 java 的用户下尝试以下命令 $ touch /folder/test.xml

如果您的文件位于其他位置(例如 /home/AAA/folder/test.xml),请替换上述路径。

这个想法是测试你当前的用户是否可以写文件

【讨论】:

  • 我没有更改用户或做任何不同的事情。我所做的只是更改 Java 版本并重建代码
  • 删除 xml 文件并让应用程序重新创建它解决了这个问题,但仍然留下了为什么它在 java 1.5 之前可以工作的问题。
  • 我猜你的 java 1.5 应用程序会锁定文件(例如忘记关闭语句)。所以只有它自己才能解锁。与java版本无关
猜你喜欢
  • 2014-01-03
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
  • 2013-04-03
相关资源
最近更新 更多