4
respostas

Não entendi por que não aceitou o nome do arquivo.

Eu coloquei o arquivo lorem.txt no projeto, conforme demonstrado no Vídeo.

Entretanto ao ler a linha:

FileInputStream fis = new FileInputStream("lorem.txt");

Foi lançada a exceção, pois ele não encontrou o arquivo.

Eu utilizo Linux. Para corrigir, coloquei o caminho completo:

FileInputStream fis = new FileInputStream("/home/guto/Desenvolvimento/Projetos/java-io/src/lorem.txt");

Assim funcionou.

Mas ficou a dúvida: Se eu tivesse desenvolvendo a aplicação pra rodar em outro sistema, por exemplo, windows, o caminho utilizaria outra estrutura, por exemplo, c:\users\usuario\lorem.txt. Logo, como eu faria? Um código para cada S.O. (Windows, LInux, etc)?

4 respostas

Opa, você pode usar o File.separator

Por que no meu caso eu tive de colocar o caminho completo do arquivo? O arquivo está no mesmo diretório, conforme o vídeo. Entretanto, se colocar apenas o nome do arquivo, ele não encontra.

Quando realizamos manipulação de arquivos existem algumas diferenças entre os sistemas operacionais. Uma boa prática para estes casos é utilizar o arquivo como um resource do projeto(mesmo o porque o arquivo não é parte do código ) deixando-o na seguinte estrutura src/main/resources/<aquivo_para_manipulacao

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.net.URL;

public class Main {
    public static void main(String[] args) {
        URL path = Main.class.getResource("nome_do_arquivo_dentro_da_sua_pasta_resources");
        FileInputStream file = null;
        try {
            file = new FileInputStream(path.getPath());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

Espero ter ajudado []s

Tente retirá-lo da pasta src e deixá-lo nesse caminho: /home/guto/Desenvolvimento/Projetos/java-io/lorem.txt

Acredito que esse deve ser o local certo para funcionar em qualquer sistema.

Veja se funciona.