Errore java.lang.NullPointerException

di il
8 risposte

Errore java.lang.NullPointerException

Ciao ragazzi,
torno a chiedere il vostro aiuto per un problema che stò incontrando con Java.
In pratica stò svolgendo un progetto e devo creare un metodo che legge un file e restituisce lo stesso file modificato.Il metodo funziona ma restituisce questo errore:
Exception in thread "main" java.lang.NullPointerException
at Proviamo.Stampiamo(Proviamo.java:34)
at Proviamo.main(Proviamo.java:19)

Ecco il codice:

public class Proviamo {
	
	public static void main(String[] args) 	throws IOException {
		File f= new File("C://Users//Elena//workspace//toolParser//Sequence.csv");
		
		BufferedReader	read= new BufferedReader(new FileReader(f));
	
		Stampiamo(f);
		read.close();
	
	}
	
	public static void Stampiamo(File f) throws IOException{
		BufferedReader	read= new BufferedReader(new FileReader(f));
		 FileOutputStream prova = new FileOutputStream("Sequence.csv");
		 PrintStream scrivi = new PrintStream(prova);
		scrivi.println("Message,"+"TypeMessage,"+ "NameSender," +"TypeSender,"+"NameReceiver,"+"TypeReceiver,"+"Argument1,"+"Argument1_type");
		 try
	     {
			 while(true){

					String s = read.readLine();
					String [] splits = s.split("\\,");
					if(splits.length==5){
						System.out.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+" , , , ");
						scrivi.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+",,," );
					
					}
					for(int vaf= 0;vaf<splits.length;vaf++)
						if(splits.length==6){
							System.out.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+splits[5]+","+" , ,");
							scrivi.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+splits[5]+" , ,");
							break;	
						}
					if(splits.length==7){
						System.out.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+splits[5]+splits[6]+","+" , ");
						scrivi.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+splits[5]+splits[6]+" ,");
					
					}
	          }
			
	      }
	      catch (IOException e)
	      {
	          System.out.println("Errore: " + e);
	          System.exit(1);
	      }
		 scrivi.close();
		prova.close();
		 read.close();
}
			}
			


Il metodo in sostanza legge il file e conta le parole per ogni riga,se le parole sono 8 ok,non fa nulla ma se sono meno di 8 aggiunge delle virgole .
Ecco il file csv:

Message,TypeMessage,NameSender,TypeSender,NameReceiver,TypeReceiver,Argument1,Argument1_type
AddCustomer,Call,User,user,System,System 
Customer_Exsists,Call,System,System,System,System,OMOLOGATO 
Read,Call,System,System,Customer 
customer,Return,Customer,System,System 
Customer_Exsists,Return,System,System,System,System 
CustomerExsistsError,Call,System,System,User,user 
CreateNewCustomer,Call,System,System,Customer,new_customer 
Ack,Call,System,System,User,user 

Grazie Elena

8 Risposte

  • Re: Errore java.lang.NullPointerException

    elenasco ha scritto:


    Il metodo funziona ma restituisce questo errore:
    Exception in thread "main" java.lang.NullPointerException
    at Proviamo.Stampiamo(Proviamo.java:34)
    at Proviamo.main(Proviamo.java:19)
    readLine() restituisce null al end-of-stream. E quindi va testato, cosa che tu non fai.

    L' "idioma" tipico d'uso di readLine() è:
    String linea;
    
    while ((linea = br.readLine()) != null) {
        // usa linea .....
    }

    P.S. i close andrebbero fatti sempre, in qualunque caso. Il System.exit(1) non è particolarmente bello lì e visto che il metodo ha il throws IOException, allora sarebbe più appropriato gestire l'eccezione a monte, non lì nel metodo.
  • Re: Errore java.lang.NullPointerException

    Ok grazie mille,sempre gentilissimo e bravissimo.volevo chiederti un'altra cosa...come posso cancellare un file?grazie
    Elena
  • Re: Errore java.lang.NullPointerException

    elenasco ha scritto:


    come posso cancellare un file?
    java.io.File ha il metodo delete().
  • Re: Errore java.lang.NullPointerException

    Ciao Andrea,
    grazie mille per la risposta.Ho provato a creare un metodo Delete ma purtroppo non riesco ancora a cancellare il file.Help me
    
    public class Proviamo {
    	
    	public static void main(String[] args) 	throws IOException {
    		File f= new File("C://Users//Francesca//workspace//toolParser//Sequence2.csv");
    		
    		BufferedReader	read= new BufferedReader(new FileReader(f));
    		Stampiamo(f);
    		Delete(f);
    		
    	read.close();
    
    	}
    		
    	
    	public static void Stampiamo(File f) throws IOException{
    		BufferedReader	read= new BufferedReader(new FileReader(f));
    		 FileOutputStream prova = new FileOutputStream("Sequence.csv");
    		 PrintStream scrivi = new PrintStream(prova);
    		scrivi.println("Message,"+"TypeMessage,"+ "NameSender," +"TypeSender,"+"NameReceiver,"+"TypeReceiver,"+"Argument1,"+"Argument1_type");
    		 try
    	     {
    			 while(true){
    
    					String s;
    					while((s= read.readLine())!=null){
    					String [] splits = s.split("\\,");
    					if(splits.length==5){
    						System.out.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+" , , , ");
    						scrivi.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+",,," );
    					
    					}
    					for(int vaf= 0;vaf<splits.length;vaf++)
    						if(splits.length==6){
    							System.out.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+splits[5]+","+" , ,");
    							scrivi.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+splits[5]+" , ,");
    							break;	
    						}
    					if(splits.length==7){
    						System.out.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+splits[5]+splits[6]+","+" , ");
    						scrivi.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+splits[5]+splits[6]+" ,");
    					
    					}
    					
    					
    					
    	          }
    			 }
    			 
    			 
    	      }
    	      catch (IOException e)
    	      {
    	          System.out.println("Errore: " + e);
    	          
    	      }
    		
    }
    	
    	public static void Delete(File daEliminare){
    	
    		if(daEliminare.exists()) //se esiste...
    		{
    			if(daEliminare.delete()) //prova a eliminarlo...
    				System.out.println("File eliminato!"); //e conferma...
    		}
    		else
    		{
    			System.out.println("Il file non esiste!");//altrimenti avverte l'utente
    		}
    	
    	}	
    	
    	
    	
    			}
    			
    
    
    
    Grazie
    Elena
  • Re: Errore java.lang.NullPointerException

    elenasco ha scritto:


    Ho provato a creare un metodo Delete ma purtroppo non riesco ancora a cancellare il file.
    		File f= new File("C://Users//Francesca//workspace//toolParser//Sequence2.csv");
    		
    		BufferedReader	read= new BufferedReader(new FileReader(f));
    		Stampiamo(f);
    		Delete(f);
    		
    	read.close();
    Se si vuole cancellare un file, bisogna perlomeno assicurarsi che non sia "aperto" con una delle classi di I/O (e non ci siano altre applicazioni esterne che lo usano).
    Nel tuo main hai creato un BufferedReader (a cosa serva non lo so ... visto che non lo usi nel main) e lo chiudi dopo il delete. Quindi in tale scenario è improbabile che il file possa essere cancellato.
  • Re: Errore java.lang.NullPointerException

    Ho provato a togliere il Buffer ma non lo cancella ugualmente
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.PrintStream;
    import java.io.PrintWriter;
    import java.util.Scanner;
    
    	
    public class Proviamo {
    	
    	public static void main(String[] args) 	throws IOException {
    		File f= new File("C://Users//Francesca//workspace//toolParser//Sequence2.csv");
    		
    		
    		Stampiamo(f);
    		Delete(f);
    	
    
    	
    
    	}
    		
    	
    	public static void Stampiamo(File f) throws IOException{
    		BufferedReader	read= new BufferedReader(new FileReader(f));
    		 FileOutputStream prova = new FileOutputStream("Sequence.csv");
    		 PrintStream scrivi = new PrintStream(prova);
    		scrivi.println("Message,"+"TypeMessage,"+ "NameSender," +"TypeSender,"+"NameReceiver,"+"TypeReceiver,"+"Argument1,"+"Argument1_type");
    		 try
    	     {
    			 while(true){
    
    					String s;
    					while((s= read.readLine())!=null){
    					String [] splits = s.split("\\,");
    					if(splits.length==5){
    						System.out.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+" , , , ");
    						scrivi.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+",,," );
    					
    					}
    					for(int vaf= 0;vaf<splits.length;vaf++)
    						if(splits.length==6){
    							System.out.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+splits[5]+","+" , ,");
    							scrivi.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+splits[5]+" , ,");
    							break;	
    						}
    					if(splits.length==7){
    						System.out.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+splits[5]+splits[6]+","+" , ");
    						scrivi.println(splits[0]+","+splits[1]+","+splits[2]+","+splits[3]+","+splits[4]+","+splits[5]+splits[6]+" ,");
    					
    					}
    					
    					
    					
    	          }
    					break;
    			 }
    			 
    			 
    	      }
    	      catch (IOException e)
    	      {
    	          System.out.println("Errore: " + e);
    	          
    	      }
    		
    }
    	
    	public static void Delete(File daEliminare){
    	
    		if(daEliminare.exists()) //se esiste...
    		{
    			if(daEliminare.delete()) //prova a eliminarlo...
    				System.out.println("File eliminato!"); //e conferma...
    		}
    		else
    		{
    			System.out.println("Il file non esiste!");//altrimenti avverte l'utente
    		}
    	
    	}	
    	
    	
    	
    			}
    			
    	
    
    Come posso fare????
    Help me please
    Elena
  • Re: Errore java.lang.NullPointerException

    elenasco ha scritto:


    Ho provato a togliere il Buffer ma non lo cancella ugualmente

    Come posso fare????
    In Stampiamo non c'è un close() del BufferedReader.
  • Re: Errore java.lang.NullPointerException

    Grazie mille,funziona tutto!Sei un grande!!!
    Elena
Devi accedere o registrarti per scrivere nel forum
8 risposte