Newsgroup: it.lavoro.informatica
Titolo: Bamboccioni belli del nonno

questo semplice programmino conta le righe di un file. Provate ad 
immaginare un progetto complesso, se ci riuscite, ammesso che ne 
abbiate mai visto uno.
Ora non lamentatevi, la tecnologia, il nuovo che ï¿œ avanzato, ha 
lavorato per voi.
Oggi 200 bamboccioni laureati, eggiï¿œ vi hanno fatto prendere la laurea, 
scrivono codice discutibile e spesso incomprensibile, che prima 
scrivavamo in 20. Prima, perï¿œ, ci facevamo pagare e molto bene, ora se 
non siete disoccupati, vi dovete accontentare di 130 euro/gg lordi al 
giono come cocopro o a pi.
Non lamentatevi !!!
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
public class LineCounter {
    public int count(File file) {
        System.out.println("Handling "+file.getName());
        int count = 0;
        // Get all files in current directory
        if (file.isDirectory()) {
            // Get the listing in this directory
            count = recurseDirectory(file, count);
        } else {
            // It is a file
            count = countLinesIn(file);
        }
        return count;
    }
    /**
     * Counts code excluding comments and blank lines in the given file
     * @param file
     * @return int
     */
    public int countLinesIn(File file) {
        int count = 0;
        System.out.println("Counting "+file.getName());
        try {
            BufferedReader reader = new BufferedReader(new 
FileReader(file.getAbsolutePath()));
            String line = null;
            do {
                line = reader.readLine();
                if (line!=null &&
                    line.indexOf("*")==-1 &&
                    line.indexOf("//")==-1 &&
                    line.length()>0
                ) count++;
            }
            while (line!=null);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return count;
    }
    public int recurseDirectory(File file, int count) {
        File [] files = file.listFiles(new FileFilter() {
            public boolean accept(File file) {
                if (file.getName().indexOf(".java")!=-1 || 
file.isDirectory()) {
                    return true;
                } else {
                    return false;
                }
            }
        });
        for (int i=0;i<files.length;i++) {
            count += count(files[i]);
        }
        return count;
    }
    public static void main(String [] args) {
        LineCounter lc = new LineCounter();
        System.out.println("Line Count = "+lc.count(new 
File(args[0])));
    }
}

        }
LOL! :-D IMHO ma non va bene! :-D
-- 
http://www.evilripper.net
http://www.flickr.com/photos/evilripper/

 LOL! :-D IMHO ma non va bene! :-D
appunto !!!! bamboccione bello del nonno !!!

mi fai capire anche a me (che non conosco java) ?
A me sembra un problema nell'algoritmo ( ==-1 immagino significhi che 
non l'ha trovato...) ma per come ha messo gli && sono tutte condizioni 
in and quindi conta le righe non vuote che hanno i caratteri "//" E "*" 
all'interno...
ma questo escluderebbe i commenti nella forma
/*
*/
ma che non so se ci sono in java.....
amlo ha scritto:


 ma che non so se ci sono in java.....
ma che si tratta di un file di testo sorgente java lo hai dedotto tu o 
hai trovato specifiche a proposito ?
BAMBOOOOOOOOOOOOOOOCCIONE BELLO DEL NONNO !!!!!!


Ma hai almeno visto che c'ï¿œ scritto nel codice che TU hai postato...?

 questo semplice programmino conta le righe di un file.
utilie come a un pesce una bicicletta! 

      */
Il problema è qua. Basta cambiare il javadoc e il bug è fixato ;)
--
www.megadix.it

Scriveva AleTV mercoledï¿œ, 02/12/2009:

Bravo ! Correggilo e ripostalo corretto....o sei sterile ????


Tu sei capace invece di scrivere un post chiaro? O stai facendo dei test 
perchï¿œ cerchi dei "mentalisti"?
Che minchia c'entra contare le righe di un file, con i saltare i commenti e 
con l'esclusione dei file .java?
Mica vorrai far intendere che chi ha scritto quel codice si ï¿œ inventato le 
specifiche (implementazione a parte)?

il codice che hai postato ï¿œ parte di jakarta-jmeter
jakarta-jmeter/src/htmlparser/org/htmlparser/tests/codeMetrics/LineCounter.java
e fan ben altro che contare le line in un file.
Se il tuo post era provocatorio ï¿œ scemo perchï¿œ ci sono ovviamente altri
modi di contare semplicemente le linee di un file in java:
FileReader fr = new FileReader(file);
LineNumberReader ln = new LineNumberReader(fr);
int count = 0;
while (ln.readLine() != null){
  count++;
}
se il tuo intento era fare un paragone col delphi, ï¿œ comunque stupido,
in quanto queste 6 righe di java funzionano da linux a osx, a windows a
freebsd, delphi in questo senso ï¿œ molto piï¿œ limitato.
Se volevi mostrare un modo per contare le linee di un file velocemente
con delphi ï¿œ comunque un post stupido in quanto in bash mi basta fare:
wc -l nomefile.ext
se il codice che hai postato ï¿œ di un tuo collaboratore e lo ha spacciato
per contare le righe di un file strozzalo.
Michelangelo

michelangelo giacomelli ha scritto:

Inoltre aggiungo denigrare una classe di programmatori solo perchï¿œ la
classe io.file di un determinato linguaggio non ha un metodo che fa il
linecounting ï¿œ veramente ridicolo, specialmente quando con la
piattaforma in questione viene scritto codice per il web e per
cellulari, mercato che delphi si sogna.

 linecounting ï¿œ veramente ridicolo,
Concordo
vorrei perï¿œ aggiungere che se era necessario fare solo linecounting,
esiste la classe java.io.LineNumberReader fornita "chiavi in mano"
insieme al pacchetto di base.
-- 
Scientology: se la conosci la eviti, se la conosci non ti uccide...
http://xenu.com-it.net
 - 
http://xenu.freewinds.cx
 - 
http://www.xenu.net
(per rispondere personalmente leva IlDitoDalCulo)
---> 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 <---

il 02.12.2009 13.49, Scrive amlo 43514776:

Magari l'ha capito dal filro, non che sia un test a prova di bomba, ma 
l'intento sembra chiaro:


 ma che non so se ci sono in java.....
Per esserci ci sono, e vengono anche cosiderati  con
  line.indexOf("*")==-1
che in realtï¿œ omette anche righe con una mera moltiplicazione, ma questo 
e' un altro discorso.

 
eh... ma non ha comunque un metodo count in stile delphi ti "costringe"
sempre a fare un ciclo, ï¿œ piï¿œ una classe utile a considerare uno stream
come una serie di linee di stringhe numerate...

 e' un altro discorso.
infatti ci avevo pensato subito a un operazione, ma oltretutto non e' 
detto che l'* ci sia sempre:
/*
dfnlksfd
ddgljhdf
lghï¿œkh
*/
quel codice non va BENE , ma comunque non e' mica colpa di java ! :-D e
comunque sia regexp is better.
cya

 Se il tuo post era provocatorio è scemo
Direi pure se non era provocatorio, eh.

michelangelo giacomelli ha scritto:

QUOTO++
Grande risposta!!!