Java: InputStream trop lent pour lire des fichiers volumineux
Je dois lire un 53 MO fichier caractère par caractère. Quand je le fais en C++ à l'aide de ifstream, il est complété en millisecondes, mais à l'aide de Java InputStream, il faut plusieurs minutes. Est-il normal de Java cette lente ou ai-je raté quelque chose?
Aussi, j'ai besoin de compléter le programme en Java (servlets à partir de laquelle j'ai du appeler les fonctions qui traitent de ces personnages). Je pensais peut-être que l'écriture du fichier de traitement de la partie en C ou en C++ et en Java Native Interface à l'interface de ces fonctions avec mes programmes Java... Comment cette idée est-elle?
Quelqu'un peut-il me donner un autre bout... j'ai sérieusement besoin de lire le fichier plus rapidement. J'ai essayé à l'aide de tampon d'entrée, mais ce n'est pas de donner les performances, même proche du C++.
Édité: Mon code s'étend sur plusieurs fichiers et il est très sale, donc je donne le synopsis
import java.io.*;
public class tmp {
public static void main(String args[]) {
try{
InputStream file = new BufferedInputStream(new FileInputStream("1.2.fasta"));
char ch;
while(file.available()!=0) {
ch = (char)file.read();
/* Do processing */
}
System.out.println("DONE");
file.close();
}catch(Exception e){}
}
}
source d'informationauteur pflz
Vous devez vous connecter pour publier un commentaire.
J'ai couru ce code avec un 183 MO fichier. C'imprimé", Écoulé à 250 ms".
Je voudrais essayer cette
imprime
Utiliser un
BufferedInputStream
:Comme indiqué ci-dessus, l'utilisation d'un BufferedInputStream. Vous pouvez également utiliser le NIO paquet. Notez que pour la plupart des fichiers, BufferedInputStream sera tout aussi rapide de la lecture comme NIO. Cependant, pour les très gros fichiers, NIO peut faire mieux parce que vous pouvez fichier mappé en mémoire des opérations. En outre, le NIO colis n'est interruptible IO, alors que le java.io forfait ne comprend pas. Cela signifie que si vous voulez annuler l'opération à partir d'un autre thread, vous devez utiliser NIO pour la rendre fiable.