Video: Java-programmering 40 - Lesing og skriving til fil - Tekst 2024
Mange Java-programmer leser tegn fra datamaskinens tastatur. Disse programmene bruker ting som Skanner, System. i, og nextDouble - ting definert i Java's API. DoPayroll-programmet i denne oppføringen setter et nytt snurr på denne historien. I stedet for å lese tegn fra tastaturet, leser programmet tegn fra EmployeeInfo. txt fil. Filen bor på datamaskinens harddisk.
importer java. util. Scanner; importer java. io. Fil; importer java. io. IOException; offentlig klasse DoPayroll {public static void main (String args []) kaster IOException {Scanner diskScanner = ny skanner (ny fil ("EmployeeInfo. txt")); for (int empNum = 1; empNum <= 3; empNum ++) {payOneEmployee (diskScanner);} diskScanner. Lukk ();} Statisk tomgangsbetalingOneEmployee (Skanner aScanner) {Medarbeider anEmployee = Ny Medarbeider (); en ansatt. setName (aScanner. nextLine ()); en ansatt. setJobTitle (aScanner. nextLine ()); en ansatt. cutCheck (aScanner. nextDouble ()); aScanner. nextLine ();}}
For å lese tegn fra en fil, bruker du noen av de samme tingene som hjelper deg å lese tegn fra tastaturet. Du bruker Skanner, NextDouble og andre godbiter. Men i tillegg til disse godbiter har du noen ekstra forhindringer å hoppe. Her er en liste:
-
Du trenger et nytt fil objekt. For å være mer presis, trenger du en ny forekomst av API-filens klasse. Du får denne nye forekomsten med kode som
ny fil ("EmployeeInfo. Txt")
Ting i anførselstegn er navnet på en fil - en fil på datamaskinens harddisk. Filen inneholder tegn.
På dette punktet gjør terminologien fjellene ut av molehills. Visst er setningene Ny fil objekt og ny fil eksempel vist , , men alt du gjør er å lage en ny fil ("EmployeeInfo. Txt") en fil på harddisken din. Etter at du har skapt ny fil ("EmployeeInfo. Txt") til ny skanner,
Scanner diskScanner = ny skanner (ny fil ("EmployeeInfo. Txt"));
du kan glemme alt om den nye filbransjen. Fra det tidspunktet i koden står diskScanner for EmployeeInfo. txt filnavn på datamaskinens harddisk. (Navnet diskScanner står for en fil på harddisken, akkurat som i tidligere eksempler, står tastaturet for de knappene du trykker på dag og dag ut.)
Opprette et nytt filobjekt i oppføringen er som å opprette et nytt medarbeiderobjekt senere i samme oppføring. Den eneste forskjellen er at medarbeider- og kontoklassene er definert i denne bokens eksempler.Fil-klassen er definert i Java's API.
Når du kobler til en diskfil med ny skanner, må du ikke glemme den nye fildelen. Hvis du skriver ny skanner ("EmployeeInfo. Txt") uten ny fil, vil kompilatoren ikke tankene. (Du får ikke advarsler eller feilmeldinger før du kjører koden.) Men når du kjører koden, får du ikke noe som resultatene du forventer å få.
-
Du må referere til klassen Fil med sitt fulle navn - java. io. Fil . Du kan gjøre dette med en importdeklarasjon som den i oppføringen. Alternativt kan du koble opp koden din med en setning som
Scanner diskScanner = ny skanner (ny java.io. Fil ("EmployeeInfo. Txt"));
-
Du trenger en kaster IOException -klausul. Mange ting kan gå galt når programmet kobles til EmployeeInfo. tekst. For en ting, kanskje ikke harddisken din har en fil med navnet EmployeeInfo. tekst.
-
For en annen, filen EmployeeInfo. txt kan være i feil katalog. For å stramme for denne typen ulykke, tar Java-programmeringsspråket visse forholdsregler. Språket insisterer på at når en diskfil er involvert, erkjenner du mulige farer ved å ringe ny skanner.
Du kan erkjenne farene på flere mulige måter, men den enkleste måten er å bruke en kasteklausul. I oversikten slutter hovedmetodeens overskrift med ordene kaster IOException. Ved å legge til disse to ordene, appellerer du Java-kompilatoren.
Det er som om du sier "Jeg vet at ringer ny skanner kan føre til problemer. Du trenger ikke å minne meg. "Og sikkert nok, legger kaster IOException til din hovedmetode, holder kompilatoren fra å klage. (Uten denne kaste klausulen, får du en unreported unntak feilmelding.)