PDA

View Full Version : [JAVA] Scrittura su file


guylmaster
19-05-2012, 00:44
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:


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?


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,
guylmaster.

franksisca
22-05-2012, 09:21
ad occhio mancano un paio di flush sugli stream in chiusura "se non erro"