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:
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)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();
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?
Vi ringrazio in anticipo,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(); }
Neptune.