Video: Linux Tutorial for Beginners: Introduction to Linux Operating System 2024
Veel Java-programma's lezen tekens vanaf het toetsenbord van de computer. Deze programma's gebruiken dingen zoals Scanner, Systeem. in, en nextDouble - dingen gedefinieerd in Java's API. Het DoPayroll-programma in deze lijst geeft een nieuwe draai aan dit verhaal. In plaats van tekens van het toetsenbord te lezen, leest het programma tekens uit de EmployeeInfo. txt-bestand. Het bestand leeft op de harde schijf van uw computer.
java importeren. util. Scanner; java importeren. io. Het dossier; java importeren. io. IOException; public class DoPayroll {public static void main (String args []) gooit IOException {Scanner diskScanner = nieuwe scanner (nieuw bestand ("EmployeeInfo. txt")); for (int empNum = 1; empNum <= 3; empNum ++) {payOneEmployee (diskScanner);} diskScanner. close ();} static void payOneEmployee (Scanner aScanner) {Employee anEmployee = new Employee (); een werknemer. setName (aScanner. nextLine ()); een werknemer. setJobTitle (aScanner. nextLine ()); een werknemer. cutCheck (aScanner. nextDouble ()); aScanner. nextLine ();}}
Om tekens uit een bestand te lezen, gebruikt u enkele van dezelfde dingen die u helpen bij het lezen van tekens op het toetsenbord. U gebruikt Scanner, nextDouble en andere goodies. Maar naast deze goodies, heb je nog een paar extra hindernissen om te springen. Hier is een lijst:
-
U hebt een nieuw File -object nodig. Om preciezer te zijn, hebt u een nieuw exemplaar van de klasse File van de API nodig. U krijgt deze nieuwe instantie met code zoals
nieuw bestand ("EmployeeInfo. Txt")
Het spul tussen aanhalingstekens is de naam van een bestand - een bestand op de harde schijf van uw computer. Het bestand bevat tekens.
Op dit moment maakt de terminologie bergen uit molshopen. Natuurlijk, de zinnen nieuw Bestand object en nieuw Bestand exemplaar verschijnen , maar het enige wat je doet is het maken van een nieuw Bestand ("EmployeeInfo. Txt") staan voor een bestand op uw harde schijf. Nadat u het nieuwe bestand ("EmployeeInfo. Txt") in de nieuwe scanner hebt geplaatst,
Scanner diskScanner = nieuwe scanner (nieuw bestand ("EmployeeInfo. Txt"));
u kunt alles over de nieuwe bestandsactiviteit vergeten. Vanaf dat punt in de code staat diskScanner voor de EmployeeInfo. txt bestandsnaam op de harde schijf van uw computer. (De naam diskScanner staat voor een bestand op uw harde schijf, net als in eerdere voorbeelden staat het naamtoetsenbord voor die knoppen die u dagelijks indrukt.)
Het aanmaken van een nieuw File-object in de listing is vergelijkbaar met het maken van een nieuw Employee-object later in dezelfde listing. Het enige verschil is dat de klassen Werknemer en Account zijn gedefinieerd in de voorbeelden van dit boek.De klasse File wordt gedefinieerd in de API van Java.
Vergeet niet het nieuwe bestandsonderdeel wanneer u verbinding maakt met een schijfbestand met een nieuwe scanner. Als u een nieuwe Scanner ("EmployeeInfo. Txt") zonder nieuw Bestand schrijft, zal de compiler het niet erg vinden. (U ontvangt geen waarschuwingen of foutmeldingen voordat u de code uitvoert.) Maar wanneer u de code uitvoert, krijgt u niet zoiets als de resultaten die u verwacht te krijgen.
-
U moet de klasse Bestand verwijzen naar de volledige naam - java. io. Bestand . U kunt dit doen met een importverklaring zoals die in de aanbieding. Als alternatief kunt u uw code overzichtelijk maken met een statement als
Scanner diskScanner = nieuwe scanner (nieuw java. Io. bestand ("EmployeeInfo. Txt"));
-
Je hebt een worpen-IOException -clausule nodig. Er kunnen veel dingen misgaan wanneer uw programma verbinding maakt met EmployeeInfo. tekst. Om te beginnen heeft uw harde schijf mogelijk geen bestand met de naam EmployeeInfo. tekst.
-
Voor een ander, het bestand EmployeeInfo. txt staat mogelijk in de verkeerde map. Om zich te schikken voor dit soort calamiteiten, neemt de Java-programmeertaal bepaalde voorzorgsmaatregelen. De taal benadrukt dat wanneer een schijfbestand betrokken is, u de mogelijke gevaren erkent van het bellen met een nieuwe scanner.
Je kunt de gevaren op verschillende manieren erkennen, maar de eenvoudigste manier is om een worp-clausule te gebruiken. In de lijst eindigt de header van de hoofdmethode met de woorden gooit IOException. Door deze twee woorden toe te voegen, verheugt u de Java-compiler.
Het is alsof u zegt: "Ik weet dat het bellen naar een nieuwe scanner tot problemen kan leiden. Je hoeft me er niet aan te herinneren. "En ja, het toevoegen van gooit IOException aan je hoofdmethode zorgt ervoor dat de compiler niet klaagt. (Zonder deze clausule voor het genereren van worpen krijgt u een foutbericht over een niet-aangegeven uitzondering.)