Compteur de lignes de fichiers source dans un repertoire

Description

Exemple d utilisation recursive pour un programme

et puis c sympa pour compter les ligne d un proget ;o)

;o)

Source / Exemple :


import java.awt.BorderLayout;
import java.awt.HeadlessException;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.EditorKit;
import javax.swing.text.JTextComponent;
import javax.swing.text.StyleContext;
import javax.swing.text.StyledEditorKit;
/**

  • @author ludo
  • /
public class FrmCptr extends JFrame { /**
  • Constructor for FrmCptr.
  • @throws HeadlessException
  • /
public FrmCptr() throws HeadlessException { super(); setSize( 800, 300 ); setLocation( 300, 300 ); JScrollPane sclp = new JScrollPane(); sclp.setAutoscrolls( true ); sclp.setOpaque( true ); getContentPane().setLayout( new BorderLayout() ); getContentPane().add( sclp, BorderLayout.CENTER ); sclp.getViewport().add( editPane ); editPane.setEditable( false ); EditorKit edK = new StyledEditorKit(); editPane.setEditorKit( edK ); } JEditorPane editPane = new JEditorPane(); int total = 0; private void addTotal() { report += "Total global = " + total; editPane.setText( report ); editPane.repaint(); } public void compteLignes( String path ) { try { File f = new File( path ); int c = linesInFiles( f ); report += "Total = " + c + " lignes "; report += newLine(); System.out.println( "Total = " + c + " lignes " ); total += c; editPane.setText( report ); editPane.repaint(); } catch (Exception e) { System.out.println( "compteLigne eror :" + e ); } } private int linesInFile( File file ) { int cpt = 0; try { String fic = file.getName().toLowerCase(); if ( file.isFile() && fic.endsWith( ".java" ) ) { BufferedReader bfr = new BufferedReader( new FileReader( file ) ); while( bfr.readLine() != null ) { cpt++; } } } catch (Exception e) { System.out.println( "linesInFile eror :" + e ); } truc += cpt; return cpt; } String report = ""; int truc = 0; private int linesInFiles( File files ) { int cpt = 0; try { if ( files.isDirectory() ) { report += idemptation() + "Repertoire : " + files.getPath(); report += newLine(); incInd(); File[] f = files.listFiles();// new FilterFileJava() ); int c = 0; for ( int i = 0; i < f.length; i++ ) { File file = f[ i ]; c += linesInFiles( file ); } cpt += c; decInd(); report += idemptation() + "Sous-total du repertoire : " + files.getPath() + " = " + c; report += newLine(); } else { int c = linesInFile( files ); report += idemptation() + "Fichier : " + files.getName() + " ( " + c + " lignes ). "; report += newLine(); cpt += c; } } catch (Exception e) { System.out.println( "linesInFiles eror : " + e ); } return cpt; } private String newLine() { return "\r\n"; } String ind = ""; String dec = "..."; private String idemptation() { return ind; } private void incInd() { ind += dec; } private void decInd() { if ( ind.length() > dec.length() ) ind = ind.substring( dec.length() ); } class FilterFileJava implements FileFilter { public boolean accept(File f) { String fic = f.getName().toLowerCase(); if ( fic.endsWith( ".java" ) ) return true; return false; } } StyleContext sc; DefaultStyledDocument doc; /**
  • Create an editor to represent the given document.
  • /
protected JTextComponent createEditor() { sc = new StyleContext(); doc = new DefaultStyledDocument(sc); JTextPane p = new JTextPane(doc); return p; } public static void main(String[] args) { if ( args.length >= 1 ) { FrmCptr fr = new FrmCptr();//.setVisible( true ); fr.setVisible( true ); for (int i = 0; i < args.length; i++) { System.out.println( "Argument " + i + " = " + args[ i ] ); fr.compteLignes( args[ i ] ); // lance le comptage recursif } if ( args.length > 1 ) fr.addTotal(); } else { System.out.println( "need 1 param " ); } } }

Conclusion :


et voila modifiable a souhait...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.