1046 votes

Meilleur moyen de lire un fichier texte

Il semble qu’il y a quelques façons pour lire et écrire des données à l’aide de fichiers.

Je suis en train de lire des données ASCII dans un fichier. Quelles sont les différences afin que je peux décider ce qui est le meilleur moyen ?

747voto

Knubo Points 3020

Ma façon préférée de lire un fichier de petite taille, est d'utiliser un BufferedReader et un StringBuilder. Il est très simple et au point (bien que pas particulièrement efficace, mais assez bon pour la plupart des cas):

    BufferedReader br = new BufferedReader(new FileReader("file.txt"));
    try {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            line = br.readLine();
        }
        String everything = sb.toString();
    } finally {
        br.close();
    }

Certains ont fait remarquer qu'après avoir Java 7, vous devez utiliser la fermeture automatique caractéristiques:

    try(BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            line = br.readLine();
        }
        String everything = sb.toString();
    }

Quand j'ai lu les chaînes comme ceci, j'ai l'habitude de vouloir faire quelques manipulation des chaînes par ligne de toute façon, donc, puis-je aller pour cette mise en œuvre.

Mais si je veux réellement viens de lire un fichier dans une Chaîne, j'ai toujours l'utilisation d'Apache Commons IO avec la classe IOUtils.la méthode toString (). Vous pouvez avoir un coup d'oeil à la source ici:

http://www.docjar.com/html/api/org/apache/commons/io/IOUtils.java.html

    FileInputStream inputStream = new FileInputStream("foo.txt");
    try {
        String everything = IOUtils.toString(inputStream);
    } finally {
        inputStream.close();
    }

Et encore plus simple avec Java 7:

    try(FileInputStream inputStream = new FileInputStream("foo.txt")) {
        Session IOUtils;
        String everything = IOUtils.toString(inputStream);
    }

632voto

Pangea Points 36713

L'ASCII est un fichier TEXTE si vous utilisez des Lecteurs pour la lecture. Java prend également en charge la lecture à partir d'un fichier binaire en utilisant InputStreams. Si les fichiers en cours de lecture sont énormes, alors vous voulez utiliser un BufferedReader sur le dessus d'un FileReader pour améliorer les performances de lecture.

Aller à travers cet article sur comment utiliser un Lecteur de

Je voudrais aussi vous conseille de télécharger et de lire ce merveilleux (mais gratuit) livre intitulé Penser En Java

Dans Java 7

nouvelle Chaîne(les Fichiers.readAllBytes(...)) ou des Fichiers.readAllLines(...)

Dans Java 8

Les fichiers.lignes(..).forEach(...)

152voto

Jesus Ramos Points 15798

La façon la plus simple consiste à utiliser la `` classe en Java et l’objet FileReader. Exemple simple :

``a plusieurs méthodes pour la lecture en chaînes, nombres, etc.... Vous pouvez consulter pour plus d’informations sur la page de documentation de Java.

57voto

Grimy Points 279

Voici une autre façon de le faire sans utiliser des bibliothèques externes :

20voto

Claude Points 265

Les méthodes au sein de `` peut aussi être très pratique, par exemple :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X