NullPointerException in I/O di Java

« Older   Newer »
  Share  
Endorama
icon13  view post Posted on 2/5/2008, 14:02




Ho un piccolo problemino legato ad un programmino Java che sto scrivendo...

dopo aver fatto un po' di metodi di rito, ho creato 2 metodi per salvare su file e per caricare i dati da file.

Ovviamente il salvataggio va a buon fine, e nel caricamento mi compare una NullPointerException alla riga 166 di cui proprio non riesco ad identificarne le cause. (CreaListaUtenti.java è il file con il main da cui chiamo i metodi)
Il messaggio visualizzato è:
CITAZIONE

Exception in thread "main" java.lang.NullPointerException
at <login.java:166>
at <crealistautenti.java:30>

ecco la parte di codice incriminato, in spoiler metto tutto il codice del file

CITAZIONE

154 | public void readList() throws IOException {
155 |
156 | FileInputStream fin = new FileInputStream(fileName);
157 | BufferedInputStream bin = new BufferedInputStream(fin);
158 | DataInputStream din = new DataInputStream(bin);
159 |
160 | int numUtenti = din.readInt();
161 |
162 | System.out.print("numUtenti : " + numUtenti + "\n");
163 |
164 | User[] utenti = new User[25];
165 |
166 | for(int i = 0; i < numUtenti ; i++) { utenti[i].read(din , fileName, utenti, numUtenti); }
167 | }

SPOILER (click to view)

import java.io.*;

class ArrayTerminato extends Exception{ }

public class Login {

private class User {

private String utente;
private String password;

// COSTRUTTORI
public User() {

utente = "utente";
password = "psw-utente";
}
public User(String user, String pass) {

utente = user;
password = pass;
}

// METODI SET()
public void setUtente(String user) {
utente = user;
}
public void setPassword(String pass) {
password = pass;
}

//METODI GET()
public String getUtente() {

return utente;
}
public String getPassword() {

return password;
}

//METODI I/O
public void save(String name, DataOutputStream marco) throws IOException {
FileOutputStream fout = new FileOutputStream(name);
BufferedOutputStream bout = new BufferedOutputStream(fout);

marco.writeUTF(utente);
marco.writeUTF(password);
}

public void read(DataInputStream marco, String in, User[] users, int num) throws IOException {
FileInputStream fin = new FileInputStream(in);
BufferedInputStream bin = new BufferedInputStream(fin);

String utente = marco.readUTF();
String password = marco.readUTF();

users[num] = new User(utente, password);

System.out.println("Letti i dati dell'account : \n" +
" Utente : " + utente + "\n" +
"Password : " + password);
}

} // end 'User.java'

//CAMPI PRIVATE

private User[] utenti;
private int numUtenti;

private boolean login = false;

private String fileName = "PassList.txt";

//COSTRUTTORI
public Login() {

utenti = new User[25];
numUtenti = 0;
}

public Login(String user, String pass) {

utenti = new User[25];
numUtenti = 0;
}

/*
Metodo per aggiungere un utente
*/
public void addUser(String userName, String userPass) throws ArrayTerminato {

if (numUtenti == utenti.length) {
throw new ArrayTerminato();
}

utenti[numUtenti] = new User(userName, userPass);
numUtenti++;
}

/*
Metodo per stampare a video tutti gli utenti e le loro password
*/
public void toPrinter() {

for (int i = 0; i < numUtenti; i++) {
System.out.println(i + " - UserName : " + utenti[i].getUtente() + "\n" +
" Password : "+ utenti[i].getPassword());
System.out.println(" <--------------------->");
}
}


/*
Metodo per verificare che al nome utente corrisponda la relativa password
*/
public boolean verify(String user, String pass) {

for (int i = 0; i < numUtenti; i++) {
login = user.equals(utenti[i].getUtente()) && pass.equals(utenti[i].getPassword());
}

return login;
}



// OUTPUT SU FILE <--> INPUT DA FILE
/*
Metodo per salvare in un file nome e password di un utente
*/
public void saveList() throws IOException {

FileOutputStream fout = new FileOutputStream(fileName);
BufferedOutputStream bout = new BufferedOutputStream(fout);
DataOutputStream dout = new DataOutputStream(bout);

dout.writeInt(numUtenti);
// System.out.print("salvato dato 0" + "\n");

for(int i = 0; i < numUtenti ; i++) {
utenti[i].save(fileName, dout);
// System.out.print("salvato dato 0" + i + "\n");
}

dout.flush();
dout.close();
}

/*
Metodo per recuperare da un file nome e password di un utente
*/
public void readList() throws IOException {

FileInputStream fin = new FileInputStream(fileName);
BufferedInputStream bin = new BufferedInputStream(fin);
DataInputStream din = new DataInputStream(bin);

int numUtenti = din.readInt();

System.out.print("numUtenti : " + numUtenti + "\n");

User[] utenti = new User[25];

for(int i = 0; i < numUtenti ; i++) { utenti[i].read(din , fileName, utenti, numUtenti); }
}

}



Qualcuno mi sa aiutare nel risolvere il problema????

Ho risolto grazie lo stesso...sono "passato per un'altra parte", e ho aggirato il problema....

Edited by Endorama - 4/5/2008, 20:23
 
Top
vlk4r0
view post Posted on 19/5/2008, 20:26




mi spiegeresti qual'era il problema? Possibile che non era in quella riga?
 
Top
1 replies since 2/5/2008, 14:02   188 views
  Share