Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Scrittura in un file

  1. #1

    Scrittura in un file

    Salve a tutti,
    ho un ciclo for in cui di volta in volta aggiungo una lista e quest'ultima vorrei scriverla in un file sovrascrivendo il contenuto precedente del file ovvero ci deve essere sempre solo una versione della lista nel file.

    Per farlo utilizzo i seguenti comandi:

    codice:
    FileOutputStream out = new FileOutputStream("testplista.txt");	
    PrintStream scrivi = new PrintStream(out);
    if(outputFP.size() == 0)
    	System.out.println("LA LISTA E' VUOTA!!!");
    scrivi.println(outputFP);
    scrivi.close();
    out.close();
    Come mai vedo il file che a volte risulta essere vuoto (e difatti stonando il programma e aprendolo E' vuoto) eppure la grandezza della lista non è mai di 0? (la lista è outputFP)

    Tra l'altro il ciclo mi va in loop ce qualche controindicazione nel fatto che in eclipse premo il tasto stop? non dovrebbero essercene visto che non sempre il file è vuoto.

    Il punto è che è un programma che dovrebbe rimanere in esecuzione per svariate ore e quindi non mi è possibile fare un debug passo passo per vedere ogni singolo valore (ecco che vorrei scrivere tutto in un file e poi testare la correttezza del file con una funzione).

    Il dubbio che mi voglio togliere è se con l'attuale input ci vogliono solo tante tante ore o se ce appunto qualcosa che non va.


    Tra l'altro quello che voglio fare come controllo su questo file è leggerlo, copiarlo in due liste differenti e poi confrontare queste due liste per essere sicuri che non ci siano due stringhe duplicate.
    Ho provato a fare questo metodo, secondo voi è corretto?

    codice:
    		public void controllaDupplicati(String percorso_file1) throws IOException{
    			FileInputStream fstream1 = new FileInputStream(percorso_file1);	  
    			DataInputStream in1 = new DataInputStream(fstream1);
    			BufferedReader br1 = new BufferedReader(new InputStreamReader(in1));
    			
    			String strLine;	
    			
    			LinkedList<String> l1 = new LinkedList<String>();
    			LinkedList<String> l2 = new LinkedList<String>();
    			
    			  while ((strLine = br1.readLine()) != null)   
    			  {
    				  l1.add(strLine);
    				  l2.add(strLine);
    			  }
    			  
    			  for(int i=0; i < l1.size(); i++)
    			  {
    				  //System.out.println(l1.get(i));
    				  for(int j=0; j < l2.size(); j++)
    				  {
    					  if(i != j)
    					  {
    						  if(l1.get(i).compareTo(l2.get(j)) == 0)
    						  {
    							  System.out.println("Il seguente pattern è stato trovato piu volte: " + l1.get(i));
    						  }
    					  }
    				  } 
    
    					  
    			  }
    			  
    			  br1.close();
    			  in1.close();
    			  fstream1.close();
    		}
    Vi ringrazio in anticipo,
    Neptune.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    Re: Scrittura in un file

    Originariamente inviato da Neptune
    Salve a tutti,
    ho un ciclo for in cui di volta in volta aggiungo una lista e quest'ultima vorrei scriverla in un file sovrascrivendo il contenuto precedente del file ovvero ci deve essere sempre solo una versione della lista nel file.

    Per farlo utilizzo i seguenti comandi:

    codice:
    FileOutputStream out = new FileOutputStream("testplista.txt");	
    PrintStream scrivi = new PrintStream(out);
    if(outputFP.size() == 0)
    	System.out.println("LA LISTA E' VUOTA!!!");
    scrivi.println(outputFP);
    scrivi.close();
    out.close();
    outputFP è la tua lista?
    Dovresti scrivere elemento per elemento, non l'intera lista (a meno che la lista non sia serializzabile e qualcuno non abbia detto al tuo posto di scrivere elemento per elemento).

    Devi fare poi un flush () sull'outputstream, in modo da forzare l'eventuale buffer interno dello stream (ne forzi lo svuotamento).

    Imposta la scrittura elemento per elemento e prima della chiusura del file chiedi flush.
    Se premi stop problemi non ce ne sono, ma in realtà tu non hai scritto niente (per quanto detto sopra).

    Riguardo al controllo duplicati, carica un file e mettilo in una lista, carica il secondo leggendo riga per riga e controlla che la riga non sia presente nella prima lista.
    La correttezza la puoi verificare da te in un solo modo: esegui e vedi se hai il risultato desiderato
    RTFM Read That F*** Manual!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.