 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Mel Guest
|
Posted: Sun Nov 28, 2004 9:54 am Post subject: Lettura da file |
|
|
Salve,
è la prima volta che scrivo in questo newsgroup. Il problema che
mi si è presentato è il seguente:
devo leggere un file di testo in cui ci sono 3 float sulla prima
riga e devo quindi memorizzarli in un array. Seguo un libro a
livello didattico, e finora sono riuscito a fare lo Stream di
caratteri con il seguente codice:
import java.io.*;
public class LetturaTxt{
public static void main(String args[]){
FileReader r =null;
try{
r= new FileReader(args[0]);
}
catch(FileNotFoundException e){
System.out.println("File non trovato");
System.exit(1);
}
try{
int n=0, x=r.read();
while(x>=0){
char ch=(char) x;
System.out.println(""+ch);
n++;
x=r.read();
}
System.out.println("nTotale caratteri: "+n);
}
catch(IOException ex){
System.out.println("errore di input");
System.exit(2);
}
}
}
In questo modo però leggo un carattere alla volta e diciamo che
non riesco a dare "significato" ai float che mi serve
memorizzare.
1)Sarebbe meglio fare lo Stream di Byte o non c'è differenza?
2)Come faccio a risolvere il problema che vi ho spiegato in alto?
--
Inviato da Virgilio http://newsgroup.virgilio.it
...un servizio di news via web con in piu' l'antispam
|
|
| Back to top |
|
 |
Blood Guest
|
Posted: Sun Nov 28, 2004 10:00 pm Post subject: Re: Lettura da file |
|
|
| Quote: | non riesco a dare "significato" ai float che mi serve
memorizzare.
Cosa intendi per dare "significato"?? |
Blood
|
|
| Back to top |
|
 |
Mel Guest
|
Posted: Sun Nov 28, 2004 11:06 pm Post subject: Re: Lettura da file |
|
|
Blood ha scritto:
| Quote: | non riesco a dare "significato" ai float che mi
serve
memorizzare.
Cosa intendi per dare "significato"??
Blood
|
Esempio semplice: ho un file con 3 numeri interi 10 150 e 300 (a
proposito, un file txt con codifica Unicode potrebbe andare
bene?) e voglio che il mio programma li legga e li memeorizzi su
delle variabili di tipo int, meglio ancora su un array, fine.
Oggi pomeriggio ho continuato le mie ricerche ed ho trovato che
a caso mio andrebbe il DataInputStream, ma ho provato ad
utilizzarlo e mi legge delle cose senza senso.
Grazie per la risposta
Mel
--
Inviato da Virgilio http://newsgroup.virgilio.it
...un servizio di news via web con in piu' l'antispam
|
|
| Back to top |
|
 |
Blood Guest
|
Posted: Mon Nov 29, 2004 1:32 pm Post subject: Re: Lettura da file |
|
|
| Quote: | a caso mio andrebbe il DataInputStream, ma ho provato ad
utilizzarlo e mi legge delle cose senza senso.
|
Forse perchè tu non hai salvato degli int con un DataOutputStream ma hai
scritto solamente dei numeri in un txt, quindi vengono visti come
stringhe...questa è la mia considerazione, magari è sbagliata;-)
Blood
|
|
| Back to top |
|
 |
Blood Guest
|
|
| Back to top |
|
 |
Mel Guest
|
Posted: Mon Nov 29, 2004 4:02 pm Post subject: Re: Lettura da file |
|
|
Grazie mille, hai risolto il 70% dei miei problemi.
Blood ha scritto:
Inviato da Virgilio http://newsgroup.virgilio.it
...un servizio di news via web con in piu' l'antispam
|
|
| Back to top |
|
 |
matish Guest
|
Posted: Tue Nov 30, 2004 1:03 am Post subject: Re: Lettura da file |
|
|
Stavo sfogliando le pagine di una "rivista specializzata" quando Mel mi ha
interrotto con la ridicola scusa:
| Quote: | devo leggere un file di testo in cui ci sono 3 float sulla prima
riga e devo quindi memorizzarli in un array.
|
Come li distingui? Diciamo che tra ogni coppia di numeri c'é uno spazio,
allora fai così:
BufferedReader reader = new BufferedReader(new FileReader(<il tuo file>));
String linea;
while((linea = reader.readLine()) != null) {
//leggi il file a righe
StringTokenizer st = new StringTokenizer(linea," ");
//restituisce i pezzi di stringa tra due spazi
while(st.hasMoreToken()) {
float num = Float.parseFloat(se.nextToken());
/* qui fai quello che devi fare col numero, ad esempio
lo metti in un array */
}
}
Ok? Il concetto è che leggi il file per righe e poi spezzetti ogni riga nei
numeri.
Se non ti importa sapere in che riga sta ogni numero puoi anche leggere
tutto il file, metterlo in una stringa e passare questa allo
stringTokenizer. In fine, se non vuoi usare stringTokenizer perché
programmi da poco e non vuoi incasinarti puoi tranquillamente fare una cosa
tipo:
int ultimo = 0, pos;
while( (pos = linea.indexOf(" ",ultimo)) >= 0) {
float num = Float.parseFloat(linea.substring(ultimo,pos));
//fai quello che devi fare col numero
ultimo = pos+1;
}
Ciao
Matteo
--
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it/imsv/
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|