PDA

View Full Version : [Java] file di testo


carMAN
25-06-2005, 11:58
Ciao a tutti...

ho un file di testo con delle parole che devo inserire in un vettore.
Il file di testo è composto così:
a
abbi
abbia
abbiamo
abbiano
abbiate
....

il codice Java che esegue l'inserimento nel vettore è così:

String file="c:\\ita.txt";
File f = new File(file);
BufferedReader d = new BufferedReader(new FileReader(f));
String token="";
while((token = d.readLine())!=null)
{
if (!token.equalsIgnoreCase("\n"))
{
this.words.add(token.trim().toUpperCase());
System.out.println(token);
}
}
d.close();

il problema è che il file viene letto in maniera errata: il System.out presente nel codice mi stampa a video il seguente risultato :

*a*

*a*b*b*i

*a*b*b*i*a

.....

dove il simbolo * sta per un 'quadratino' del quale con conosco il significato

Sapete come pulire queste stringhe in modo da inserire nel mio vettore esattamente il contenuto del file?

ciao e tante grazie

carMAN
25-06-2005, 15:41
nessuno mi sa aiutare?

kingv
25-06-2005, 19:06
nessuno mi sa aiutare?


il tuo codice è corretto, sei sicuro che il problema non sia nel file di testo?

carMAN
25-06-2005, 19:14
ti invio il file di testo così puoi controllarlo.
grazie

kingv
25-06-2005, 19:55
infatti non è un file di testo.

guarda come lo vedo:

http://utenti.lycos.it/kingv/window.gif

franksisca
25-06-2005, 20:40
Non credo che sia quello il problem, prova, dove metti "\n" a fare cosi....+"\r\n";

e dimmi cosa succede, credo che risolverai immediatamente. :D

carMAN
25-06-2005, 20:46
ho scritto così

..if (!token.equalsIgnoreCase("\r\n"))...

ma non ho risolto niente

Falcon_DAoC
25-06-2005, 22:03
ti invio il file di testo così puoi controllarlo.
grazie

Io ho aperto il file e mi sembra corretto... :what:

....
a
abbi
abbia
abbiamo
abbiano
abbiate
accidenti
acciocché
accipicchia
ad
affinché
agli
ah
ahi
ahimè
ai
al
alalà
alcun
alcuna
alcunché
....

carMAN
26-06-2005, 10:39
uffa....
come posso risolvere questo problema?

vlacus
26-06-2005, 10:43
import java.io.*;
import java.util.*;


public class Read {
public static void main(String[] args) {

String file = "percorso del file";
Vector vec = new Vector();

try
{
BufferedReader filebuf = new BufferedReader(new FileReader(file));
String nextStr = filebuf.readLine(); // legge una riga del file
while (nextStr != null)
{
vec.add(nextStr);
nextStr = filebuf.readLine(); // legge la prossima riga
}
filebuf.close(); // chiude il file
}
catch(Exception e)
{
System.out.println("eccezione" + e);
}
for (int i = 0; i < vec.size(); i++)
{
System.out.println(vec.get(i));
}
}

ho fatto un test scrivendo questo semplice programma e funziona tutto bene, quindi non dovrebbe essere un problema di file

carMAN
26-06-2005, 14:11
Ho eseguito il tuo codice e ottengo questo risultato...

t o '

t o t

t r a

t r a c

t r a n n e

t r a n s e a t

...

u n d i c e s i m o

u n d i c i

u n d i c i m i l a

u n e

u n i

...

v e n t i n o v e s i m o

v e n t i q u a t t r e s i m o

v e n t i q u a t t r o

v e n t i s e i

v e n t i s e i e s i m o

v e n t i s e t t e

....

v u o i

v u o l e

z i t t o
...

come puoi vedere ci sono spazi bianchi tra tutti i caratteri.
Ho corretto il tuo codice:

import java.io.*;
import java.util.*;


public class prova {
public static void main(String[] args) {

String file = "c:\\ita.txt";
Vector vec = new Vector();

try
{
BufferedReader filebuf = new BufferedReader(new FileReader(file));
String nextStr = filebuf.readLine(); // legge una riga del file
while (nextStr != null)
{
nextStr = filebuf.readLine(); // legge la prossima riga
StringTokenizer st = new StringTokenizer(nextStr," ");
nextStr="";
while (st.hasMoreTokens()) nextStr+=st.nextToken();
vec.add(nextStr);
}
filebuf.close(); // chiude il file
}
catch(Exception e)
{
System.out.println("eccezione" + e);
}
for (int i = 0; i < vec.size(); i++)
{
System.out.println(vec.get(i));
}
}
}

ma non ho risolto niente...

come si fa?

71104
26-06-2005, 14:18
forse il problema è che il file è codificato in Unicode; se lo apri con Blocco Note come lo vedi?

carMAN
26-06-2005, 14:19
bene

71104
26-06-2005, 14:20
ho verificato: il file è codificato in Unicode; aprilo con Blocco Note e risalvalo come ANSI.

71104
26-06-2005, 14:22
guarda come sono generoso, te l'ho convertito io :D

carMAN
26-06-2005, 14:27
ti ringrazio
ora funziona