检测java.io.filenotfoundexception的根本原因

egmofgnx  于 2021-07-05  发布在  Java
关注(0)|答案(3)|浏览(469)

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抱怨用户名或密码无效。
除了解析异常消息以获得更细粒度的异常发生原因信息之外,还有其他方法吗?消息解析的问题是,在不同的语言环境中,消息会有所不同。

gcuhipw9

gcuhipw91#

在创建之前,请自己检查文件存在/读写权限 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
  ...
}
nukf8bse

nukf8bse2#

一种方法是查看异常的实际类型:从文档中可以看到,有许多子类提供更细粒度的信息。
然而,你可能不会走远。与大多数检查过的异常一样,通常最好记录/报告异常,并要求用户选择如何更正它。

dly7yett

dly7yett3#

在尝试读取文件之前,可能需要使用java.io.file对象查看文件的属性。有一个canread方法可以用来确定用户是否可以读取文件。

相关问题