Leitura de arquivos [RESOLVIDO]

11 respostas
tauame

Olá pessoal, fiz um simples programa que abre um arquivo, le o q tem nele e imprime no console… fiz baseado neste tutorial: http://www.youtube.com/watch?v=3RNYUKxAgmw

Aqui está o programa, e o arquivo daonde ele le (codificação ANSI):

public class Main {
    public static void main(String[] args){
        ReadFile r = new ReadFile();
        r.readFile();    // linha 9!!!!!!!!!!!!!!!!!!!!!! (indicada pelo erro)
        r.closeFile();
    }
}
import java.io.*;
import java.util.*;

public class ReadFile {
    private Scanner x;

    public ReadFile(){
        try{
            x = new Scanner(new File("test.txt"));
        }
        catch(Exception e){
            System.out.println("nao abriu o arquivo");
        }
    }

    public void readFile(){
        while(x.hasNext()){          //linha 23!!!!!!!!!!!!!!(indicada pelo erro)
            String a = x.next();
            String b = x.next();
            String c = x.next();
            System.out.printf("%s %s %s\n", a, b, c);
        }
    }

    public void closeFile(){
        x.close();
    }
}

Arquivo test.txt(localizado no mesmo diretorio do código fonte do programa):
20 bucky roberts
60 joe doe
50 mike ike
49 sis priss

quando eu tento rodar o programa, por algum motivo ele nao consegue ler o arquivo <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/c.pngonfused.png?v=9" title=":confused:" class="emoji" alt=":confused:"> e dá esse erro:

"run:

Exception in thread main java.lang.NullPointerException

nao abriu o arquivo

at ReadFile.readFile(ReadFile.java:23)

at Main.main(Main.java:9)

Java Result: 1

CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

"

a variavel x ta null pelo jeito, mas nao sei porque…
por que será que está acontecendo isso? :confused:

PS.: as numeração das linhas daqui estão diferentes do meu editor aqui porque eu tirei alguns comentários do início, mas indiquei no código onde dá o erro

11 Respostas

pedroroxd

axo que isso não deveria ser um void:

public void ReadFile(){ try{ x = new Scanner(new File("test.txt")); } catch(Exception e){ System.out.println("nao abriu o arquivo"); } }

tauame

pedroroxd:
axo que isso não deveria ser um void:

public void ReadFile(){ try{ x = new Scanner(new File("test.txt")); } catch(Exception e){ System.out.println("nao abriu o arquivo"); } }

e se nao fosse um void, o que seria? õ.Ô

tauame

ok, eu tirei o void e agora ta entrando na exception do construtor…

pedroroxd

o constructor…
tire o void e ve o que dá

tauame

eu ja disse o q acontece quando tira o void…
mas agora minha namorada tinha alterado la no “new File(test.txt)” e colocou o caminho completo pro arquivo e funcionou… mas nao sei por que nao funciona como eu deixei :frowning:

pedroroxd

agora o erro tá no diretório do .txt
ele não fica junto com o código!
Ele fica junto com os pacotes…

Ele fica na pasta do projeto, onde está a pasta src (não dentro dela, do lado dela)

tauame

ta resolvido já o problema… tinha que mudar o diretório de trabalho nas configurações do projeto XD
minha namorada achou isso, aí é só colocar como diretório de trabalho o /src… (no netbeans)

pedroroxd

beleza…
Agora vai no primeiro post, clica em editar e acrescente [RESOLVIDO] no final do tópico!
Bons estudos =)

robert.gamma

Cara deu trabalho, mas consegui fazer funcionar, de uma olhada na auteração de código:

import java.io.File;

import java.io.FileNotFoundException;

import java.util.Scanner;

public class ReadFile {
private static Scanner x;

private static void readFile() {
    	 	try {
    		       Scanner x = new Scanner(new File("test.txt"));
    		       while (x.hasNext()) {
    		         System.out.println(x.next());
    		       }
    		       x.close();
    	 	}
    		       catch (FileNotFoundException e) {
    		       e.printStackTrace();
    		     }
    		   } 

     public static void main(String[] args) {
            ReadFile r = new ReadFile();  
            r.readFile(); 
     }
   }
gpd38

Sei que conseguiu resolver mas so para dar uma dica.

Crie classes separadas tipo: Le_Arquivo / Grava_Arquivo / que serão classes que possivelmente ira usar novamente.
Assim você reaproveita codigo

pedroroxd

gpd38:
Sei que conseguiu resolver mas so para dar uma dica.

Crie classes separadas tipo: Le_Arquivo / Grava_Arquivo / que serão classes que possivelmente ira usar novamente.
Assim você reaproveita codigo


E deixa em um pacote “utils” (de utilidades) onde vc guarda esse tipo de coisa, como ler arquivos, mandar email, etc

Criado 18 de abril de 2010
Ultima resposta 19 de abr. de 2010
Respostas 11
Participantes 4