[java.io] Résumé de l'entrée de chaîne Java (InputStream, Reader, Scanner)

Récemment, j'ai commencé à écrire Java en classe. Je n'ai pas compris la relation entre File, InputStream, FileReader et Scanner, donc je vais les résumer.

Cet article suppose Java SE 1.8. Cependant, cet article est un résumé de java.io plus ancien, et non de java.nio.

Il n'y a pas de gestion des exceptions dans le code, mais vous devez pouvoir recevoir une FileNotFoundException lors de l'ouverture d'un fichier et une IOException lors de la lecture ou de l'écriture d'un fichier (ou le lancer à une méthode ci-dessus).

Il y a un diagramme récapitulatif au bas de la page.

référence java.io

https://docs.oracle.com/javase/jp/8/docs/api/java/io/package-summary.html

File, FileDescriptor

  File file = new File("file.txt"); //Peut être créé à partir du nom de fichier

InputStream Classe de lecture d'octets

--java.io.InputStream Classe abstraite --java.io.FileInputStream: Classe pour construire InputStream à partir de fichiers --java.io.FilterInputStream: Classe pour contenir InputStream --java.io.BufferedInputStream: Met en mémoire InputStream et le fait apparaître comme InputStream.

// System.in est une instance d'InputStream
InputStream sytemin = System.in;

//Créer un flux à partir d'un fichier
InputStream fileStream = new FileInputStream("file.txt");
//Buffer le flux
InputStream bufferedStream = new BufferedInputStream(fileStream); 

bufferedStream.close();

Reader Les classes avec 'Reader' à la fin de leur nom, comme InputStream'Reader ', sont des classes de lecture de flux de chaînes.

--java.io.Reader Classe abstraite --java.io.InputStreamReader: InputStream => Pontage vers Reader. Vous pouvez spécifier le jeu de caractères --java.io.FileReader: classe simple (Reader est construit avec File, FileDescriptor, fileName. Le codage des caractères ne peut pas être spécifié.) --java.io.BufferedReader: Buffer la classe Reader

//Créer un flux d'octets à partir d'un fichier
InputStream fileStream1 = new FileInputStream("file1.txt");
//Créer un flux de chaînes à partir d'un flux d'octets
Reader reader1 = new InputStreamReader(fileStream1);

//Créer un flux d'octets à partir d'un fichier
InputStream fileStream2 = new FileInputStream("file2.txt");
//Créez un flux de chaînes. Spécifier le codage de la chaîne
Reader reader2 = new InputStreamReader(fileStream2, "utf-8");

//Créer un Reader directement à partir d'un fichier en utilisant une classe simple
Reader reader3 = new FileReader("file3.txt");

//Tamponner le lecteur
BufferedReader bufferedReader3 = new BufferedReader(reader3);
//BufferedReader lit une ligne de texte readLine()Il y a
String line = bufferedReader3.readLine();

reader1.close();
reader2.close();
bufferedReader3.close();

java.util.Scanner Un scanner qui récupère des types primitifs tels que int, long et boolean et des chaînes à partir de texte. Il peut être construit à partir de la classe File et de la classe InputStream. Vous pouvez également spécifier le codage de la chaîne. Vous pouvez spécifier la correspondance des délimiteurs avec une expression régulière. Pour plus d'informations, https://docs.oracle.com/javase/jp/8/docs/api/java/util/Scanner.html

// System.Lire un nombre depuis
Scanner sc1 = new Scanner(System.in);
int i = sc1.nextInt();

//Construire à partir d'un fichier
Scanner sc2 = new Scanner(new File("file.txt"));

// Scanner sc2 = new Scanner("file.txt"));Je ne peux pas faire une chose pareille.
//Si tu fais ça"file.txt"J'essaye de lire la chaîne de caractères.

//Changer le délimiteur en virgule
sc2.useDelimiter(",");

//Afficher une ligne pour chaque délimiteur
while (sc2.hasNext())
{
    String str = sc2.next();
    System.out.println(str);
}

// sc1.close();
sc2.close();

Diagramme montrant la relation d'utilisation

java.io4.png

Loi de nommage

nom de la classe Démontage sens
FileInputStream File-InputStream Convertissez le fichier en InputStream.
InputStreamReader InputStream-Reader Convertissez InputStream en Reader.
FileReader File-Reader Convertir le fichier en lecteur.

Recommended Posts

[java.io] Résumé de l'entrée de chaîne Java (InputStream, Reader, Scanner)
Acquisition du contenu d'entrée à l'aide de Scanner (Java)
Résumé du support Java 2018
entrée de boucle du scanner java
[Java11] Résumé du flux -Avantages du flux-
[Java] Résumé des expressions régulières
[Java] Résumé des opérateurs (opérateur)
Résumé des bases du langage Java
Résumé de la classe Java Math
[Java] Résumé de la syntaxe de contrôle
Résumé du traitement des erreurs Java
[Java] Résumé des modèles de conception
[Java] Résumé des opérations mathématiques
[Pour les débutants] Résumé du constructeur java
Diverses méthodes de la classe Java String
Résumé du package [Java Silver Study]
[Java] Entrez dans le stdin du processus
[Java] Comparaison correcte du type String
Résumé de la programmation orientée objet utilisant Java
[Java Silver] Résumé des points de modification d'accès
Histoire de paiza.jp [solution d'entrée standard Java]
[java] Résumé de la gestion des caractères
Récapitulatif des modifications autres que JEP de Java10
[Java] Résumé personnel des instructions conditionnelles (basique)
[Java] [Maven3] Résumé de l'utilisation de Maven3
Résumé Java des conversions de types fréquemment recherchées
Résumé de Java Math.random et import (calendrier)
Chaîne Java
L'histoire de la comparaison de chaînes de bas niveau en Java
[java] Résumé de la gestion des chaînes de caractères
Récapitulatif des paramètres de l'environnement Java pour moi-même [mac]
[Java] Résumé personnel des classes et méthodes (basique)
[Java] Résumé de la façon d'omettre les expressions lambda
[Java] Obtenir la longueur de la chaîne de paire de substitution
[Java] La partie déroutante de String et StringBuilder
[Note] Java: mesure la vitesse de concaténation de chaînes