Leitura de arquivos [RESOLVIDO]

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

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"); } }

[quote=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"); } }[/quote]

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

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

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

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:

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)

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)

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

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(); 
     }
   }

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

[quote=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[/quote]
E deixa em um pacote “utils” (de utilidades) onde vc guarda esse tipo de coisa, como ler arquivos, mandar email, etc