发现File.mkdirs()失败的原因

bra*_*zzi 10 java directory io file

如果我调用其中一个方法File.mkdir()File.mkdirs()在Java中,它返回false,有没有办法知道为什么目录没有创建?

jef*_*unt 3

不完全是,不。如果未抛出 a SecurityException,则最可能的原因是路径中的拼写错误,这意味着您意外地指定了新目录的父路径,该路径在某种程度上无效。

我不认为你把它包裹在一个try { ... } catch (Exception e)块中,你没有意识到 aSecurityException被抛出,因为你正在捕获 的祖先SecurityException,是吗?

如果您坚信一切看起来都正确,但仍然失败,我想您可以简单地将其放入循环中重试,例如三次。如果它仍然失败,并且根据您的应用程序,您可能会在 UI 级别发出某种警报,或者将错误记录在日志文件中(假设您可以写入它)。

我认为一些更深层次的 I/O 问题可能会阻止它工作,但除了简单地通知用户发生故障之外,您在应用程序级别可以(或真正应该)做的不多。如果 I/O 存在更深层次的错误,则更有可能是系统/硬件/操作系统的问题,或者是您无法控制的完全不稳定的问题,例如子系统/服务崩溃。

...如果发生这种情况,则由 IT 人员负责修复,而不是您的应用程序。当然,除非您的应用程序以某种方式导致崩溃。

  • 不,事实并非如此。我发现了这个问题(父目录在集群的一个节点中有错误的所有者),但它要求我去另一层楼,与网络管理员交谈,要求某人给我一个 ssh 会话,最后输入` mkdir my/faulty/path`. 我希望有一种更实用的方法...... (2认同)
  • 所有函数都应该返回错误代码,以便您可以找出是否是 io 错误或权限问题,而不仅仅是“失败”。这确实是一个糟糕的界面。 (2认同)