Tô com um pequeno problema galera... Criei uma classe que chamei de MyFile. Bastante intuitiva, ela "cria" um arquivo cujo nome é passado como parêmtro e possui 2 métodos. Um para gravar neste arquivo e um para ler deste arquivo. Como sou novo no Java, sai procurando métodos que poderiam exercer essa funções e encontrei aqui no GUJ. Tive que dar uma adaptada, pra não dizer "mangueada", pra fazer o que eu queria.
Resumindo... Meu método de ler o arquivo pega cada linha do arquivo e armazena numa String bidimensional. Faço isso para posterior inserção numa JTable. Poderiam dar uma olhada no meu código?
public class MyFile {
String filepath = new String("data\");
File arquivo ;
String[][] data;
public MyFile (String nomeArquivo){
arquivo = new File(filepath + nomeArquivo);
if (arquivo.exists()){
System.out.println("Arquivo encontrado!!!");
}
else{
System.out.println("Arquivo nao encontrado!!!");
}
}
public void leArquivo(String nomeArquivo, int cont) {
FileInputStream fileInputStream;
InputStreamReader inputStreamReader;
LineNumberReader lineNumberReader;
// ABRIR ARQUIVO
try {
int i=0;
fileInputStream = new FileInputStream(arquivo);
inputStreamReader = new InputStreamReader(fileInputStream);
lineNumberReader = new LineNumberReader(inputStreamReader);
String linha;
linha = lineNumberReader.readLine();
StringTokenizer tk = new StringTokenizer(linha, "*");
String[][] data = new String[cont][tk.countTokens()];
data[i][0] = tk.nextToken();
int j=1;
while (tk.hasMoreTokens()){
data[i][j] = tk.nextToken();
j++;
}
i++;
while(lineNumberReader.ready()) {
linha = lineNumberReader.readLine();
tk = new StringTokenizer(linha, "*");
data[i][0] = tk.nextToken();
j=1;
while (tk.hasMoreTokens()){
data[i][j] = tk.nextToken();
j++;
}
i++;
}
}
catch (FileNotFoundException fileNotFoundException) {
System.out.println(fileNotFoundException);
}
catch (IOException ioException) {
System.out.println(ioException);
}
}
}
Já executei esse código e chequei a construção da String. Está tudo OK! Consigo acessar a string data de dentro desse método perfeitamente. Os dados estão todos armazenados na string. O problema é quando chamo no main a minha classe. Dêem uma olhada de como fiz:
public static void main(String[] args) {
// TODO code application logic here
MyFile file = new MyFile("clientes.txt");
file.leArquivo("clientes.txt",5);
System.out.println(file.data[0][0]);
}
Quando faço isso o seguinte erro ocorre: Exception in thread "main" java.lang.NullPointerException
Pelo que entendi, não to conseguindo acessar a variável data pois ela aponta para null. É isso mesmo? Aguardo pela ajuda de vocês! Abraços.