Pergunta

FileNotFoundException é jogado em todos os tipos de ocasiões - não necessariamente apenas quando o nome do arquivo é inválido, mas também quando e. g. permissões não permitem que um arquivo a ser criado ou ler:

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)

O exemplo mostra acima um Windows alemã reclamando sobre nome de usuário ou senha inválida.

Existe uma maneira curta de analisar a mensagem exceções a ficar um pouco mais fino informações granulação em por que exatamente a exceção ocorreu? Problema com a mensagem de análise é que, em diferentes localidades as mensagens irão variar.

Foi útil?

Solução

Faça o cheque para a existência de arquivos / leitura e escrita permissões a si mesmo antes de criar FileOutputStream.

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

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

Observe que às vezes você terá que verificar as permissões de leitura / gravação em um pai de vocês arquivo de destino, se você precisa criar um novo arquivo.

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
  ...
}

Outras dicas

Você pode querer olhar para as propriedades do arquivo usando o objeto java.io.File antes de tentar ler o arquivo. Há um método canRead em que você pode usar para determinar se ou não o usuário pode ler o arquivo.

Uma abordagem é olhar para o tipo real da exceção: como você pode ver a partir do docs , há um monte de subclasses que fornecem informações mais refinado.

No entanto, você provavelmente não vai chegar longe com isso. Como a maioria das exceções verificadas, geralmente é melhor para log / relatar a exceção e pedir ao usuário para escolhas sobre como corrigi-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top