|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Feb 2005
Messaggi: 10
|
[JAVA]leggere txt - esaminarlo - stampare txt nuovo
Salve, come si intuisce dal titolo il programma che dovrei realizzare è il seguente:
Devo leggere un file (.txt) che ho (molto grande 10MB), all'interno del quale ci sono scritti dei dati che devo esaminare per poi restituire il risultato in un nuovo txt. Per leggere il txt penso di utilizzare il BufferedReader e per restituire l'output il PrintWriter (corregetemi se sbaglio). Il problema principale è esaminare il tutto all'interno del file? Come fare? In questo file ci sono moltissimi dati (un dato per ogni riga) e devo confrontare solo alcune righe di questo file tra loro, per eliminare quelle che si ripetono. Mi potete aiutare? Grazie mille |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Se devi rimuovere i duplicati, puoi dire:
Set<String> stringhe = new TreeSet<String>(); Scanner in = new Scanner(fileIn); while(in.hasNext()) stringhe.add(in.next()); PrintStream out = new PrintStream(fileOut); for(String s : stringhe) out.println(s); e questo, a spanne, direi fino a un gigabyte di dati circa (dipende in verità da quanta memoria accettabilmente rapida hai a disposizione). Ponendo il caso di una quantità di dati illimitata, la soluzione potrebbe essere uguale, salvo l'uso di un albero "mappato" su disco anzichè in memoria. Qui abbondano le soluzioni precotte. Ad esempio berkeley db è in pratica un albero B su disco, potresti usare quello: carichi una linea per volta, travasi sul database, quando hai finito di leggere il file di origine prendi i dati dal database in ordine. Anche qui sono poche righe di codice.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Feb 2005
Messaggi: 10
|
Questo è un parte del txt
Ultima modifica di amsr : 23-07-2010 alle 16:51. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La situazione è la stessa, solo che anzichè leggere, confrontare e scrivere delle stringhe leggi, confronti e scrivi dei blocchi.
Vale a dire, il tuo programma è una cosa di questo tipo: Codice:
BlockReader blockReader = new BlockReader(il file di input);
Set<Block> result = new TreeSet<Block>();
while(blockReader.hasNext()) {
result.add(blockReader.next());
}
BlockWriter blockWriter = new BlockWriter(il file di output);
for(Block b : result) {
blockWriter.write(b);
}
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Feb 2005
Messaggi: 10
|
Perfetto..allora lavoro subito su queste istruzioni che mi hai dato!!!
BlockReader e BlockWriter sono comunque delle classi già incluse in java.io ?? Quindi dovrò creare una classe che fa questo confronto di riga 4 e poi 5, definendo il tipo Block, giusto? Grazie tante!!! |
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Feb 2005
Messaggi: 10
|
P.S. scusami per le domande che possono sembrare a volte banali, ma sono un novello di Java, come si poteva capire.
Thanks |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
BlockReader e Writer sono delle classi che creerai tu per rappresentare, insieme a Block, la struttura del file e la capacità di leggere e scrivere file aventi quella struttura.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Feb 2005
Messaggi: 10
|
ok grazie ancora
|
|
|
|
|
|
#9 |
|
Junior Member
Iscritto dal: Feb 2005
Messaggi: 10
|
ok tutto fatto, grazie lo stesso, bye
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:37.



















