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)

Foi útil?

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):

  1. O arquivo existe.
  2. O arquivo não é um diretório.
  3. Você ou o processo Java tem permissões para abrir o arquivo.
  4. 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.

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