Ciao, sto facendo un piccolo esperimento.
Ho un file txt così composto:
2013-06-14 13:13:41 startup archives unpack
2013-06-14 13:13:43 install desktop-base <none> 6.0.7ubuntu1
2013-06-14 13:13:43 status half-installed desktop-base 6.0.7ubuntu1
2013-06-14 13:13:43 status triggers-pending hicolor-icon-theme 0.12-1ubuntu2
2013-06-14 13:13:43 status half-installed desktop-base 6.0.7ubuntu1
[...]
Il mio obietto è creare un altro file txt dove sono presenti solo le righe che contengono la parola "install", tipo:
2013-06-14 13:13:43 install desktop-base <none> 6.0.7ubuntu1
Ho fatto questo tentativo (tralascio per semplicità le parti meno utili):
Seguendo questa logica: scansiono il file di ingresso immettendo tutti i token in un arraylist di stringhe, poi scrivo i token che soddisfano il requisito nel nuovo file.codice:public class LeggiFile { private static ArrayList<Righe> listRighe= new ArrayList<Righe>(); public static void main(String[] args) { try { Scanner scan = new Scanner(new File("Gnome.txt")); while (scan.hasNext()) { String str1 = scan.next(); String str2 = scan.next(); String str3 = scan.next(); String str4 = scan.next(); String str5 = scan.next(); String str6 = scan.next(); if ("install".equals(str3)) { listRighe.add(new Righe(str1, str2, str3, str4, str5, str6)); } } scan.close(); } catch (FileNotFoundException e) { System.out.println("File non trovato"); } try { FileOutputStream fos = new FileOutputStream("pippoMod.txt"); PrintStream stream = new PrintStream(fos); stream.println(listRighe); } catch (IOException e) { System.out.println("Errore: " + e.getMessage()); System.exit(-1); } } }
Problemi:
1) Non tutte le righe hanno lo stesso numero di "stringhe" (dove per stringa intendo una sequenza di caratteri senza spazi, quindi i separatori sono gli spazi) quindi ovviamente così com'e' mi dà errore. Come si risolve questa cosa?
2) Anche isolando le righe più lunghe e lasciando solo tutte righe con lo stesso numero di stringhe, nel file nuovo che scrivo tutte le stringhe sono scritte sequenzialmente, senza interruzione di linea per capirci.
Come potrei risolvere?
Non voglio la soluzione pronta, soltanto un aiuto che mi indirizzi...
Grazie!

Rispondi quotando