Video: jGRASP: Getting Started 2024
Många Java-program läser tecken från datorns tangentbord. Dessa program använder saker som Scanner, System. i och nextDouble - saker definierade i Java API. DoPayroll-programmet i den här listan lägger en ny spinn på den här historien. I stället för att läsa tecken från tangentbordet läser programmet tecken från EmployeeInfo. txt-fil. Filen lever på datorns hårddisk.
importera java. util. Scanner; importera java. io. Fil; importera java. io. IOException; public class DoPayroll {Public static void main (String args []) slänger IOException {Scanner diskScanner = ny Scanner (ny fil ("EmployeeInfo. txt")); för (int empNum = 1; empNum <= 3; empNum ++) {payOneEmployee (diskScanner);} diskScanner. Stäng ();} Statisk tomgångsbetalareEnmedarbetare (Scanner aScanner) {Medarbetare anEmployee = Ny Medarbetare (); en anställd. setName (aScanner. nextLine ()); en anställd. setJobTitle (aScanner. nextLine ()); en anställd. cutCheck (aScanner. nextDouble ()); ascanner. nextLine ();}}
För att läsa tecken från en fil använder du några av samma saker som hjälper dig att läsa tecken från tangentbordet. Du använder Scanner, NextDouble och andra godsaker. Men förutom dessa godisar har du några extra hinder att hoppa. Här är en lista:
-
Du behöver ett nytt fil objekt. För att vara mer exakt behöver du en ny instans av API: s filklass. Du får denna nya instans med kod som
ny fil ("EmployeeInfo. Txt")
Sakerna i citattecken är namnet på en fil - en fil på datorns hårddisk. Filen innehåller tecken.
Vid denna punkt gör terminologin berg ut ur molehills. Visst kommer fraserna nytt fil objekt och ny fil förekomst att visas , men allt du gör är att skapa en ny fil ("EmployeeInfo. Txt") för en fil på hårddisken. När du har flyttat ny fil ("EmployeeInfo. Txt") till ny skanner,
Scanner diskScanner = ny skanner (ny fil ("EmployeeInfo. Txt"));
du kan glömma allt om den nya filaffären. Från den tiden i koden står diskScanner för EmployeeInfo. txt filnamn på datorns hårddisk. (Skivans namnskanner står för en fil på hårddisken, precis som i tidigare exempel, står tangentbordet för de knappar som du trycker in på dag och ut.)
Skapa ett nytt filobjekt i noteringen är att skapa ett nytt anställningsobjekt senare i samma lista. Den enda skillnaden är att anställda och konton klasser definieras i den här bokens exempel.Filsklassen definieras i Java API.
När du ansluter till en skivfil med ny skanner, glöm inte den nya fildelen. Om du skriver ny skanner ("EmployeeInfo. Txt") utan ny fil, kommer kompilatorn inte att tänka på det. (Du får inga varningar eller felmeddelanden innan du kör koden.) Men när du kör koden får du inte något som de resultat du förväntar dig att få.
-
Du måste referera till klassen File med sitt fulla namn - java. io. Arkiv . Du kan göra detta med en importdeklaration som den i listan. Alternativt kan du röra upp koden med ett uttalande som
Scanner diskScanner = ny skanner (ny java.io. Fil ("EmployeeInfo. Txt"));
-
Du behöver en kasta IOException klausul. Massor av saker kan gå fel när programmet kopplas till EmployeeInfo. Text. För en sak kanske din hårddisk inte har en fil med namnet EmployeeInfo. Text.
-
För en annan, filen EmployeeInfo. txt kan vara i fel katalog. För att stödja denna typ av katastrof, tar Java-programmeringsspråket vissa försiktighetsåtgärder. Språket insisterar på att när en skivfil är inblandad, bekräftar du eventuella faror med att ringa ny skanner.
Du kan bekräfta riskerna på flera möjliga sätt, men det enklaste sättet är att använda kasta klausul. I noteringen slutar huvudmetodens rubrik med orden kastar IOException. Genom att lägga till dessa två ord, appellerar du Java-kompilatorn.
Det är som om du säger "Jag vet att den nya Skannern kan leda till problem. Du behöver inte påminna mig. "Och noga med att lägga kasta IOException till din huvudmetod håller kompilatorn från att klaga. (Utan denna kasta klausul får du ett orapporterat undantagsfelmeddelande.)