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.
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();
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