在各种情况下都会抛出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 - 检测到java.io.FileNotFoundException的根本原因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1661050/

10-13 08:56