Vidéo: APPRENDRE LE JAVA #15 - LES FICHIERS 2024
De nombreux programmes Java lisent des caractères sur le clavier de l'ordinateur. Ces programmes utilisent des choses comme Scanner, Système. dans, et nextDouble - choses définies dans l'API de Java. Le programme DoPayroll de cette liste donne une nouvelle dimension à cette histoire. Au lieu de lire les caractères du clavier, le programme lit les caractères de EmployeeInfo. fichier txt. Le fichier se trouve sur le disque dur de votre ordinateur.
importer java. util. Scanner; importer Java. io. Fichier; importer Java. io. IOException; public class DoPayroll {public static void principal (String args []) throws IOException {Scanner diskScanner = nouveau Scanner (nouveau fichier ("EmployeeInfo.txt")); pour (int empNum = 1; empNum <= 3; empNum ++) {payOneEmployee (diskScanner);} diskScanner. close ();} static void payOneEmployee (Scanner aScanner) {Employé anEmployé = new Employé (); un employé. setName (aScanner, nextLine ()); un employé. setJobTitle (aScanner, nextLine ()); un employé. cutCheck (aScanner, nextDouble ()); un Scanner. nextLine ();}}
Pour lire les caractères d'un fichier, vous utilisez les mêmes éléments qui vous aident à lire les caractères du clavier. Vous utilisez Scanner, nextDouble, et d'autres goodies. Mais en plus de ces goodies, vous avez quelques obstacles supplémentaires à sauter. Voici une liste:
-
Vous avez besoin d'un nouvel objet Fichier . Pour être plus précis, vous avez besoin d'une nouvelle instance de la classe File de l'API. Vous obtenez cette nouvelle instance avec du code comme
nouveau fichier ("EmployeeInfo. Txt")
Le contenu entre guillemets est le nom d'un fichier - un fichier sur le disque dur de votre ordinateur. Le fichier contient des caractères.
À ce stade, la terminologie fait des montagnes des taupinières. Bien sûr, les expressions nouveau fichier objet et nouvelle occurrence de fichier apparaissent , mais tout ce que vous faites est de faire un nouveau fichier ("EmployeeInfo.txt") un fichier sur votre disque dur. Après avoir inséré un nouveau fichier ("EmployeeInfo.txt") dans le nouveau Scanner,
Scanner diskScanner = nouveau Scanner (nouveau fichier ("EmployeeInfo.txt"));
vous pouvez oublier tout sur la nouvelle activité de fichier. À partir de ce point dans le code, diskScanner représente le EmployeeInfo. txt nom de fichier sur le disque dur de votre ordinateur. (Le nom diskScanner représente un fichier sur votre disque dur tout comme, dans les exemples précédents, le clavier de nom représente les boutons que vous appuyez sur les touches jour et jour.)
Créer un nouvel objet File dans la liste revient à créer un nouvel objet Employee plus tard dans la même liste. La seule différence est que les classes Employee et Account sont définies dans les exemples de ce livre.La classe File est définie dans l'API de Java.
Lorsque vous vous connectez à un fichier disque avec un nouveau scanner, n'oubliez pas la nouvelle partie Fichier. Si vous écrivez un nouveau Scanner ("EmployeeInfo.txt") sans nouveau fichier, le compilateur ne sera pas dérangé. (Vous n'obtiendrez aucun avertissement ou message d'erreur avant d'exécuter le code.) Mais lorsque vous exécutez le code, vous n'obtiendrez rien comme les résultats que vous attendez.
-
Vous devez vous référer à la classe File par son nom complet - java. io. Fichier . Vous pouvez le faire avec une déclaration d'importation comme celle de la liste. Alternativement, vous pouvez encombrer votre code avec une instruction comme
Scanner diskScanner = nouveau Scanner (nouveau java. Io. Fichier ("EmployeeInfo.txt"));
-
Vous avez besoin d'une clause throws IOException . Beaucoup de choses peuvent mal se passer lorsque votre programme se connecte à EmployeeInfo. SMS. D'une part, votre disque dur peut ne pas avoir un fichier nommé EmployeeInfo. SMS.
-
Pour un autre, le fichier EmployeeInfo. txt peut être dans le mauvais répertoire. Pour se préparer à ce genre de calamité, le langage de programmation Java prend certaines précautions. La langue insiste sur le fait que lorsqu'un fichier disque est impliqué, vous reconnaissez les dangers possibles de l'appel d'un nouveau scanner.
Vous pouvez reconnaître les dangers de plusieurs manières possibles, mais le plus simple est d'utiliser une clause throws. Dans la liste, l'en-tête de la méthode principale se termine par les mots throws IOException. En ajoutant ces deux mots, vous apaisez le compilateur Java.
C'est comme si vous disiez "Je sais que l'appel d'un nouveau scanner peut entraîner des problèmes. Tu n'as pas à me le rappeler. Et, bien sûr, ajouter IOException à votre méthode principale empêche le compilateur de se plaindre. (Sans cette clause throws, vous obtenez un message d'erreur d'exception non signalé.)