Pour obtenir le nombre de caractères, vous devez lire le fichier. En spécifiant le codage de fichier correct, vous vous assurez que Java lit correctement chaque caractère de votre fichier.
BufferedReader.read() renvoie le caractère Unicode lu (en tant qu'int compris entre 0 et 65535). Ainsi, la manière simple de le faire serait comme ceci:
int countCharsSimple(File f, String charsetName) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), charsetName));
int charCount = 0;
while(reader.read() > -1) {
charCount++;
}
reader.close();
return charCount;
}
Vous obtiendrez des performances plus rapides en utilisant Reader.read(char[]):
int countCharsBuffer(File f, String charsetName) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), charsetName));
int charCount = 0;
char[] cbuf = new char[1024];
int read = 0;
while((read = reader.read(cbuf)) > -1) {
charCount += read;
}
reader.close();
return charCount;
}
Pour l'intérêt, je benchmarkée ces deux et la version nio proposée dans la réponse de Andrey. J'ai trouvé le deuxième exemple ci-dessus (countCharsBuffer) pour être le plus rapide.
(Notez que tous ces exemples comprennent des caractères de séparation de ligne dans leurs comptes.)
Vous devez connaître le codage de caractères pour la question même de sens. * Est-ce que * vous connaissez l'encodage? –
La taille du fichier elle-même? 'nouveau RandomAccessFile (...). getChannel(). size()'? – fge
@fge, ceci est correct à condition qu'il n'y ait pas de caractères multi-octets. –