Java Filskriver

Java-Filskriverklassen, java.io.FileWriter, gør det muligt at skrive tegn til en fil. I den henseende fungerer Java-Filskriveren meget som FileOutputStream bortset fra at en FileOutputStream er byte-baseret, mens en FileWriter er tegnbaseret. FileWriter er beregnet til at skrive tekst, med andre ord. Et tegn kan svare til en eller flere bytes afhængigt af tegnkodningsskemaet i brug. Java FileWriter – klassen er forresten en underklasse af Java-Forfatterklassen.

Filskrivereksempel

her er en simpel Java FileWriter eksempel:

Writer fileWriter = new FileWriter("data\filewriter.txt");fileWriter.write("data 1");fileWriter.write("data 2");fileWriter.write("data 3");fileWriter.close();

Bemærk: Den korrekte undtagelseshåndtering er sprunget over her for klarhedens skyld. Hvis du vil vide mere om korrekt undtagelseshåndtering, skal du gå til Java io undtagelseshåndtering.

FileWriter har også andre konstruktører, så du kan angive den fil, du skal skrive til på forskellige måder. Se i den officielle JavaDoc for mere detaljeret info.

overskrivning vs. tilføjelse af filen

når du opretter en Java FileWriter kan du beslutte, om du vil overskrive en eksisterende fil med samme navn, eller om du vil føje til en eksisterende fil. Du bestemmer det ved at vælge hvad FileWriter konstruktør du bruger.

konstruktøren FileWriter tager kun en parameter, filnavnet, overskriver enhver eksisterende fil:

Writer fileWriter = new FileWriter("c:\data\output.txt");

FileWriter har en konstruktør, der også tager 2 parametre: filnavnet og en boolsk. Boolean angiver, om en eksisterende fil skal tilføjes eller overskrives. Her er to Java FileWriter eksempler, der viser, at:

Writer fileWriter = new FileWriter("c:\data\output.txt", true); //appends to fileWriter fileWriter = new FileWriter("c:\data\output.txt", false); //overwrites file

Filskriver tegnkodning

FileWriter antager, at du vil kode bytes til filen ved hjælp af standardtegnkodningen for den computer, din applikation kører på. Dette er måske ikke altid det, du vil have, og du kan ikke ændre det!

hvis du vil angive et andet tegnkodningsskema, skal du ikke bruge et FileWriter. Brug en OutputStreamWriter på en FileOutputStream i stedet. Med OutputStreamWriter kan du angive det tegnkodningsskema, der skal bruges, når du skriver bytes til den underliggende fil.

skriv(int)

Java FileWriter write(int) metoden skriver den nederste 16 bit af int til destinationen FileWriter er forbundet til, som et enkelt tegn. Her er et eksempel på at skrive et enkelt tegn til en Java FileWriter:

FileWriter fileWriter = new FileWriter("data/output.txt");fileWriter.write('A');

skriv(char)

Java FileWriter har også en write(char) metode, der kan skrive en række tegn til destinationen FileWriter er forbundet til. Metoden write(char) Returnerer antallet af tegn, der faktisk er skrevet til FileWriter. Her er et eksempel på at skrive en række tegn til en Java FileWriter:

FileWriter fileWriter = new FileWriter("data/output.txt");char chars = new char{'A','B','C','D','E'};fileWriter.write(chars);

skriv ydeevne

det er hurtigere at skrive en række tegn til en Java-Filskriver end at skrive et tegn ad gangen. Speedup kan være ret signifikant-op til 10 gange højere eller mere. Derfor anbefales det at bruge write(char) – metoderne, når det er muligt.

den nøjagtige hastighed, du får, afhænger af det underliggende operativsystem og udstyr på den computer, du kører Java-koden på. Hastigheden afhænger af problemer som hukommelseshastighed, harddiskhastighed og bufferstørrelser osv.

gennemsigtig Buffering via Bufferedskriver

du kan få gennemsigtig buffering af bytes skrevet til en Java FileWriter ved at indpakke den i en Java Bufferedskriver . Alle bytes skrevet til BufferedWriter vil først blive bufferet inde i et internt byte array i BufferedWriter. Når bufferen er fuld, skylles bufferen til den underliggende FileWriter på en gang. Her er et eksempel på indpakning af en Java FileWriter i en BufferedWriter:

int bufferSize = 8 * 1024;Writer writer = new BufferedWriter( new FileWriter("c:\data\output-file.txt"), bufferSize );

du kan læse mere om BufferedWriter i min Bufferedskriver tutorial.

flush ()

Java FileWriter‘s flush() metode skyller alle data skrevet til FileWriter til den underliggende fil. Dataene kan blive bufferet i OS-hukommelsen et eller andet sted, selvom din Java-kode har skrevet den til FileWriter. Ved at ringe flush() kan du forsikre dig om, at eventuelle bufferede data bliver skyllet (skrevet) til disken. Her er et eksempel på skylning af data skrevet til en Java FileWriter ved at kalde dens flush() metode:

fileWriter.flush();

lukning af en Filskriver

når du er færdig med at skrive tegn til en Java FileWriter skal du huske at lukke den. Lukning af en FileWriter sker ved at kalde sin close() metode. Her er hvordan lukning af en Java FileWriter ser ud:

fileWriter.close();

du kan også bruge try-med-ressourcer construct introduceret i Java 7. Sådan bruges og lukkes et FileWriter udseende med try-med-resources-konstruktionen:

try(FileWriter fileWriter = new FileWriter("data\filewriter.txt") ){ fileWriter.write("data 1"); fileWriter.write("data 2"); fileWriter.write("data 3");}

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.