1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Java - Verificar se um ficheiro de texto está vazio

Discussão em 'Programação' iniciada por d3baser, 4 de Janeiro de 2008. (Respostas: 2; Visualizações: 2390)

  1. d3baser

    d3baser Power Member

    Heys,
    Eu tenho um programa que vai ter de ler e guardar informação num ficheiro de texto.
    Quando o programa se inicia vai ter de ler o que está no ficheiro e quando eu o quiser desligar ele vai ter de guardar tudo no ficheiro.
    Essa parte está toda a funcionar perfeitamente, a minha dúvida é como é que eu verifico se o ficheiro tem lá dados? Porque ao que parece, se o ficheiro estiver vazio ele dá-me erro por eu estar a tentar ler algo que não existe...

    Neste momento esse pedaço de código está assim:
    Código:
            String input;
            
            input=s.nextLine();
            if (input == null) 
                numCont=0;
            else {
                numCont= s.nextInt();
            }
    o numCont é uma variavel que serve para um while que o programa vai ter de fazer quando estiver a ler os dados. Se não estiver lá nada então o numCont é 0 e o programa não executa o while, se o ficheiro tiver lá alguma coisa então ele vai executar o while conforme o numero que estiver no inicio do programa.

    Ele neste momento não faz nada. Corre sem dar erros, mas não apresenta o menu (teoricamente há um menu) que devia ser o primeiro sinal de vida dele :\

    EDIT: já dá sinal de vida, tinha uma cena mal. estava in.nextLine() e devia ser s.nextLine(). Agora dá este erro:
    Código:
     Exception in thread "main" java.util.NoSuchElementException: No line found
        at java.util.Scanner.nextLine(Unknown Source)
        at Main.main(Main.java:47)
    Que é o erro que dá quando não está nada no ficheiro.
     
    Última edição: 4 de Janeiro de 2008
  2. MadOnion

    MadOnion Folding Member

    Podes apanhar a excepção e avisar o utilizador.
    Usa o:
    Código:
    try { 
    
    String input;
    input=s.nextLine();
    
    if (input == null) 
       numCont=0;
    else
        numCont= s.nextInt();
    } 
    catch (NoSuchElementException e)  { 
      System.err.println("O ficheiro nao tem dados");
    }
    
     
  3. d3baser

    d3baser Power Member

    Ok, thanks :)

    Entretanto descubri outra maneira :p

    Código:
     File lista2 = new File("lista.txt");
    
    if (lista2.length()==0) {
                numCont=0;
            }
            else 
                numCont=s.nextInt();
    Mais uma vez, obrigado :)
     

Partilhar esta Página