Newsgroup: it.comp.java
Titolo: Come contare le righe di un file?

Ciao,
come posso fare per contare le righe di un file?
Il codice che ho provato è questo:
FileReader fr = new FileReader(inFile);
       BufferedReader in = new BufferedReader(fr);
       String line;
 int lines = 0;
       while(in.readLine() != null) {
           line = in.readLine();
           lines++;
       }
       in.close();
       System.out.println(lines);
e il file è composto da 7 righe, ma nulla :-(
Grazie.
Ciao!

 Ciao,
Come output mi viene stampato 3 ma non capisco perchč, il file č questo:
3 14:45 1 0-8186-8515-8
11 15:48 1 04-448-8453-X
1 16:04 2 01-323-9864-8
9 16:11 1 01-375-1975-3
9 16:40 2 88-386-0646-3
Grazie.
Ciao!

 ha scritto nel messaggio
news:c4h548$2io2ku$1...@ID-147723.news.uni-berlin.de...
Se invece provo questo
int num = 0;
       boolean done = false;
       while(!done) {
           line = in.readLine();
           num++;
           if(in.readLine() == null)  {
               done = true;
               System.out.println(num);
           }
       }
mi stampa 4 :-(
Ciao!

FileReader fr = new FileReader(inFile);
BufferedReader in = new BufferedReader(fr);
String line = in.readLine;
int lines = 0;
while(line != null) 
{
	line = in.readLine();
        lines++;
}
System.out.println(lines);
Prova così :)
Ciao Max
-- 
+-----------------------------------------------------------+
| Secondo alcuni autorevoli testi di tecnica Aeronautica,   |
| il calabrone non può volare, a causa della forma e del    |
| peso del proprio corpo in rapporto alla superficie alare. |
| Ma il calabrone non lo sa e perciò continua a volare.     |
|					     Igor Sikorsky  |
+-----------------------------------------------------------+

 
elementare Watson,
ogni volta che richiami in.readLine() leggi una riga
nei tuoi cicli lo richiami sempre due volte e incrementi
una volta quindi a seconda dell'ordine in cui fai le operazioni
ottieni 3 o 4 come risultato
e' un problema di logica
HTH
bye
r

 ha scritto nel messaggio
news:20040401154411....@me.it...
Con il tuo algoritmo me ne legge 10...quindi il doppio :-)

> Con il tuo algoritmo me ne legge 10...quindi il doppio :-)
 Il pezzo di codice che ti ho postato è più che corretto!
 Il problema allora è altrove prova a postare più codice
 Ti riposto il codice nel caso che l'hai copiato male ;) 
 FileReader fr = new FileReader(inFile);
 BufferedReader in = new BufferedReader(fr);
 String line = in.readLine();
 
 int lines = 0;
 
 while(line != null) 
 {
 	line = in.readLine();
        lines++;
 }
 Ciao Max


 Con il tuo algoritmo me ne legge 10...quindi il doppio :-)
L'algoritmo di Max è corretto.
Scommetto che sei tu che stai leggendo su Unix/Linux
un file creato da un PC...
- Dario
Inviato da 
www.mynewsgate.net

 ha scritto nel messaggio
news:20040401160532....@me.it...
L'intero codice è questo...l'altra classe non te la posto in quanto credo
non serva.
import java.io.*;
import java.util.StringTokenizer;
public class TestLibreria {
   int rep;
   int time;
   int copies;
   int code;
   // Libreria lib = new Libreria(rep, time, copies, code);
   public static void main(String args[]) throws IOException  {
       InputStreamReader reader = new InputStreamReader(System.in);
       BufferedReader console = new BufferedReader(reader);
       System.out.print("Scrivi il file di input: ");
       String inFile = console.readLine();
       FileReader fr = new FileReader(inFile);
       BufferedReader in = new BufferedReader(fr);
       String line = in.readLine();
       int i=0;
       while(line != null) {
           line = in.readLine();
           i++;
       }
       System.out.println(i);
}
}

 }
Mi spieghi come ti fa a sballare il conteggio
così questo programma è corretto!!!
Ma il file che tenti di leggere, ha delle righe
vuote all'interno e tu vuoi leggere solo quelle piene?
Io ho provato con anche con un semplice file di testo
prova.txt con al suo interno :
pippo
pluto
prova
e correttamente mi restituisce 3, ora o chiami un file sbagliato
oppure vuoi leggere un qualcosa in particolare? Prova ad essere più chiaro
Ti ripeto così il programma legge giustamente tutte le righe di
un file!


 un file creato da un PC...
Non credo che cambierebbe molto, cmq c'é un solo \n per riga
Ciao
Matteo
-- 
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it

 cosě questo programma č corretto!!!
Sě, il tuo programma č corretto.
Secondo me č il suo file (quello di cui conta le righe)
che č stato generato un po' su Linux/Unix
e un po' su Windows (e/o magari anche su Mac)
e quindi le sequenza di fine riga sono diverse
e mischiate fra di loro.
A me succede spesso (uso indifferentemente Windows e Linux
sullo stesso file) e Emacs (sia su PC che su Linux)
č l`unico editor che mi fa vedere
bene le diverse EOL sequences all'interno dello stesso file.
Felice di essere smentito...
- Dario

 ha scritto nel messaggio
news:20040402091653....@me.it...
...cut...
sapete dov'era l'eeore?
Il file era composto da 5 righe (scritte), ma anche da 5 righe BIANCHE :-)
Ciao!

 Il file era composto da 5 righe (scritte), ma anche da 5 righe BIANCHE :-)
Un errore di calcolo?
Come questo 
http://www.satyrnet.it/satyr/Errore_di_calcolo.jpg
 ?
- Dario