Taille d'un fichier en java
ambitieuse
-
Utilisateur anonyme -
Utilisateur anonyme -
je veux compter le nombre des mots d'un fichier texte en java,j'ai utilisé alors la classe suivante:
public class freq {
int nbMots=0;
public freq(String nomfichier ){
try {
// Création du flux bufférisé sur un FileReader, immédiatement suivi par un
// try/finally, ce qui permet de ne fermer le flux QUE s'il le reader
// est correctement instancié (évite les NullPointerException)
FileReader fr = new FileReader(nomfichier);
BufferedReader in = new BufferedReader(fr);
try{
String line = in.readLine();
while ((line=line.toLowerCase())!= null) {
if (line.equals(" ") )
nbMots++;
line = in.readLine();
}
} finally {
// dans tous les cas, on ferme nos flux
in.close();
}
}
catch(Exception e) {
// erreur de fermeture des flux
System.out.println("Exception: " + e);
}
}
}
puis dans main j'ai fait:
public class Main {
public static void main(String[] args) {
//String path="C:\\Documents and Settings\\safoufa\\Mes documents\\NetBeansProjects\\taille\\doss\\";
System.out.println("la taille est:");
String nomfichier="a\\test.txt";
freq ff=new freq(nomfichier);
System.out.println(ff.nbMots);
}
}
et toujours cette erreur s'affiche:
la taille est:
Exception: java.lang.NullPointerException
plz aidez-moi à trouver l'erreur
A voir également:
- Taille d'un fichier en java
- Comment réduire la taille d'un fichier - Guide
- Fichier bin - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Comment ouvrir un fichier epub ? - Guide
1 réponse
Salut,
Ici (<<<<<<<<<<<<<<<<<<), il faudrait plutôt "éclater" la ligne en mots et ainsi obtenir le nombre de mots contenus dans la ligne lue, cumuler ce nombre dans le total géneral qui en fin de fichier sera le résultat attendu.
Comment obtenir le nombre de mots d'une ligne:
Par exemple, depuis la version 1.4 de Java, en utilisant les expressions régulières avec l'API Regex et la méthode split() de la classe Pattern
Le nombre de mots est la longueur du tableau.
Cordialement,
Dan
while ((line=line.toLowerCase())!= null) { if (line.equals(" ") ) //<<<<<<<<<<<<< nbMots++; line = in.readLine();
Ici (<<<<<<<<<<<<<<<<<<), il faudrait plutôt "éclater" la ligne en mots et ainsi obtenir le nombre de mots contenus dans la ligne lue, cumuler ce nombre dans le total géneral qui en fin de fichier sera le résultat attendu.
Comment obtenir le nombre de mots d'une ligne:
Par exemple, depuis la version 1.4 de Java, en utilisant les expressions régulières avec l'API Regex et la méthode split() de la classe Pattern
import java.util.regex.*; // Ou mieux pour être plus précis: import java.util.regex.Pattern; import java.util.regex.Matcher; // exemple avec la ligne lue suivante String ligneLue = "Bonjour, il fait beau aujourd'hui etc..."; // compilation de la regex avec le motif espace " +" // ce qui signifie que le "séparareur" de mots est 1 ou plusieurs espaces Pattern p = Pattern.compile(" +"); // séparation en sous-chaînes (mots) dans un tableau de String(tabMots[]) String[ ] tabMots = p.split(ligneLue);
Le nombre de mots est la longueur du tableau.
Cordialement,
Dan