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