Obter FileNotFoundException quando inicializando FileInputStream com objeto File
-
14-09-2019 - |
Pergunta
Eu estou tentando inicializar um objeto FileInputStream usando um objeto File. Estou recebendo um erro FileNotFound na linha
fis = new FileInputStream(file);
Esta é estranho, já que eu abrir esse arquivo através do mesmo método para fazer regex muitas vezes.
O meu método é o seguinte:
private BufferedInputStream fileToBIS(File file){
FileInputStream fis = null;
BufferedInputStream bis =null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bis;
}
java.io.FileNotFoundException: C: \ dev \ server \ tomcat6 \ webapps \ sample local (acesso negado) Restaurant at java.io.FileInputStream.open (Método Nativo) Restaurant at java.io.FileInputStream. (fonte desconhecida) Restaurant at java.io.FileInputStream. (fonte desconhecida) Restaurant at controller.ScanEditRegions.fileToBIS (ScanEditRegions.java:52) Restaurant at controller.ScanEditRegions.tidyHTML (ScanEditRegions.java:38) Restaurant at controller.ScanEditRegions.process (ScanEditRegions.java:64) Restaurant at controller.ScanEditRegions.visitAllDirsAndFiles (ScanEditRegions.java:148) Restaurant at controller.Manager.main (Manager.java:10)
Solução
A julgar pelo stacktrace você colou no seu post eu acho que você não tem os direitos para ler o arquivo.
A classe File permite que você realiza verificações úteis em um arquivo, alguns deles:
boolean canExecute();
boolean canRead();
boolean canWrite();
boolean exists();
boolean isFile();
boolean isDirectory();
Por exemplo, você pode verificar:. Existe () && isFile () && canRead () e imprimir uma melhor de mensagem de erro, dependendo da razão pela qual você não pode ler o arquivo
Outras dicas
Esta é tem a ver com configurações de permissões de arquivos no OS. Você começou o processo de java como um usuário que não tem direitos de acesso ao diretório específico.
Você pode querer se certificar de que (em ordem de probabilidade-capa):
- O arquivo existe.
- O arquivo não é um diretório.
- Você ou o processo Java tem permissões para abrir o arquivo.
- Outro processo não tem um bloqueio no arquivo (provavelmente, como você provavelmente iria receber um IOException padrão em vez de FileNotFoundException)
Eu acho que você está executando a declaração do eclipse ou qualquer java IDE e arquivo de destino também está presente no IDE espaço de trabalho. Você está recebendo o erro como Eclipse não pode ler o arquivo de destino no mesmo espaço de trabalho. Você pode executar o código a partir do prompt de comando. Não deve através de qualquer exceção.