FileNotFoundException 在各种情况下都会抛出 - 不一定仅当文件名无效时,而且当 e.G。权限不允许创建或读取文件:

java.io.FileNotFoundException: \\server\share\directory\test.csv (Anmeldung fehlgeschlagen: unbekannter Benutzername oder falsches Kennwort)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
    at java.io.FileWriter.<init>(FileWriter.java:73)

上面的示例显示德国 Windows 抱怨用户名或密码无效。

有没有办法解析异常消息来获取更细粒度的信息 到底为什么 发生异常了吗?消息解析的问题在于,在不同的区域设置中,消息会有所不同。

有帮助吗?

解决方案

做检查文件的存在/创建FileOutputStream之前读写自己的权限。

File test_csv = new File( "\\server\share\directory\test.csv" );

if ( test_csv.exists( ) && test_csv.canWrite( ) )
{
  // Create file writer
  ...
}
else
{
  // notify user
  ...
}

请注意,有时你必须检查你的目标文件的父读/写权限,如果你需要创建一个新的文件。

File test_csv = new File( "\\server\share\directory\test.csv" );
File parent_dir = test_csv.getParentFile( )

if ( parent_dir.exists( ) && parent_dir.canWrite( ) )
{
  // Create file writer
  ...
}
else
{
  // notify user
  ...
}

其他提示

您可能需要使用的 java.io.File中试图读取该文件之前反对。有一个关于你可以用它来确定用户是否可以读取文件中的方法的CanRead

一种方法是查看异常的实际类型:正如你可以看到 文档, ,有很多子类提供更细粒度的信息。

然而,你可能不会走得太远。与大多数已检查的异常一样,通常最好记录/报告异常并询问用户如何纠正它的选择。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top