Lire un fichier à l'aide de la classe Scanner de Java

Mise en garde

Je suis nouveau dans l'écriture de Qitta. De plus, puisque je suis un étudiant universitaire poussin, je vous serais reconnaissant de bien vouloir le lire étant donné qu'il y a une grande possibilité que des erreurs soient incluses.

introduction

Cet article est un résumé personnel de la classe Scanner fournie en standard avec Java. y a-t-il. En ce qui concerne le contexte de la rédaction de cet article, → La spécification dit qu'il devrait être fait en utilisant la classe Scanner. → Je ne sais pas ça. → J'ai pu le faire. → Faites une note quelque part pour ne pas l'oublier. C'est comme ça. À propos, j'utilise généralement BufferedReader ou FileReader /javase/jp/8/docs/api/java/io/FileReader.html) est utilisé. (Oui ici ...)

Lisez le dossier

FileReader


        try {
            Scanner scanner = new Scanner (new File ("sourceFileName"/*Nom du fichier que vous souhaitez lire ici(Un laissez-passer est également requis dans certains cas)*/));
        } catch (FileNotFoundException e) { //exception
            //Que faire lorsque le fichier n'existe pas
            e.printStackTrace();
        }

La partie qui lit le fichier pour le moment. Lors de la création d'un objet, insérez l'objet de File class comme argument. La classe File conserve les informations de fichier lorsqu'un objet est créé avec le chemin du fichier comme argument. Pratique. Je pense que vous devriez le faire avec le constructeur.

Lire ligne par ligne depuis le scanner

ReadLine


        try {
            //Lorsque le fichier contient des parties non lues
            if (scanner.hasNextLine()) { 
                line = scanner.nextLine() + '\n';                                                      
            //Quand non
            } else {
                line = null;
            }
        //Erreur de lecture
        } catch (IllegalStateException e) { 
            e.printStackTrace();
            closeFile();
            System.exit (1);
        }
Nom de la méthode mouvement
hasNextLine() Renvoie vrai si le scanner a la ligne suivante
nextLine() Avancez le scanner et renvoyez une ligne

line est une variable de type String et est conservée comme un champ cette fois. Si vous sortez cette ligne, le contenu du fichier sera sorti en toute sécurité. "\ N" est ajouté pour la sortie. Je pense qu'il est normal de briser la ligne dans la déclaration principale.

Lire caractère par caractère à partir du scanner

ReadChar


        current = next;
        if (next == '\0') {
        //Seule opération courante à la fin du fichier
        } else if (next == '\n') {
            //Fin de ligne
            readLine();
            if (line != null) {
                //La ligne lue n'est pas nulle
                next = line.charAt (0);
                number = 0;
            } else {
                //La ligne lue est nulle(Fin de fichier)dans le cas de
                next = '\0'; //'\0'Représente la fin du fichier
            }
        } else {
            //Si ce n'est ni la fin du fichier ni la fin de la ligne
            next = line.charAt (++number);
        }
        return current;
Nom de variable mouvement
current Ligne en cours de lecture
next Ligne suivante à lire
number Nombre actuel de caractères

Je l'ai fait en utilisant le readLine mentionné ci-dessus. Opérationnellement, il coupe ce qui a été lu ligne par ligne, caractère par caractère. Pour être honnête, c'est déraisonnable, mais il n'y a pas de spécification car les spécifications sont comme ça.

finalement

Je l'ai fait pour que cela fonctionne pour le moment. Tout ce qui reste est de sortir avec une instruction while ou similaire. En conclusion, c'est ennuyeux. Limité à cela. J'espère juste que les futurs étudiants dans une situation similaire n'auront pas de difficultés. Si vous rencontrez un problème, lisez d'abord le document officiel de l'API (en anglais)!

Recommended Posts

Lire un fichier à l'aide de la classe Scanner de Java
[Mémo personnel] Lecture de fichiers à l'aide de BufferedReader
Créez un fichier statique qui développe les variables à l'aide de la classe ERB
[Mémo personnel] Écriture d'un fichier à l'aide de BufferedWriter
classe Scanner java
Écrire dans un fichier en utilisant ShiftJIS ・ Lire un fichier (Kotlin / JVM)
Une histoire emballée avec le scanner d'entrée standard de Java
Être un peu bloqué le dernier jour du mois en utilisant la classe Calendar de Java
Lorsque vous utilisez le constructeur de la classe Date de Java, la date avance de 1900.
Tester une classe qui reçoit un contexte et lit et écrit des fichiers