Java FileWriter

de Java FileWriter class, java.io.FileWriter, maakt het mogelijk om karakters naar een bestand te schrijven. In dat opzicht werkt de Java FileWriter net als de FileOutputStream, behalve dat een FileOutputStream byte gebaseerd is, terwijl een FileWriter karakter gebaseerd is. De FileWriter is bedoeld om tekst te schrijven, met andere woorden. Een teken kan overeenkomen met een of meer bytes, afhankelijk van het tekensetschema in gebruik. De Java FileWriter klasse is een subklasse van de Java Writer class.

FileWriter voorbeeld

hier is een eenvoudig Java FileWriter voorbeeld:

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

opmerking: De juiste uitzondering behandeling is hier overgeslagen voor de duidelijkheid. Ga naar Java Io Exception Handling voor meer informatie over de correcte afhandeling van uitzonderingen.

de FileWriter heeft ook andere constructors, waarmee u op verschillende manieren het bestand kunt opgeven waarnaar u wilt schrijven. Kijk in de officiële JavaDoc voor meer gedetailleerde informatie.

overschrijven vs. toevoegen van het bestand

wanneer u een Java FileWriter aanmaakt, kunt u beslissen of u een bestaand bestand met dezelfde naam wilt overschrijven, of dat u een bestaand bestand wilt toevoegen. U beslist dat door te kiezen welke FileWriter constructor u gebruikt.

de FileWriter constructor die slechts één parameter gebruikt, de bestandsnaam, zal elk bestaand bestand overschrijven:

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

FileWriter heeft een constructor die ook 2 parameters neemt: de bestandsnaam en een boolean. De boolean geeft aan of een bestaand bestand moet worden toegevoegd of overschreven. Hier zijn twee Java FileWriter voorbeelden waaruit blijkt dat:

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

FileWriter Character Encoding

de FileWriter gaat ervan uit dat u de bytes naar het bestand wilt coderen met behulp van de standaard tekenset voor de computer waarop uw toepassing draait. Dit is misschien niet altijd wat je wilt, en je kunt het niet veranderen!

als u een ander tekensetschema wilt opgeven, gebruik dan geen FileWriter. Gebruik in plaats daarvan een OutputStreamWriter op een FileOutputStream. Met OutputStreamWriter kunt u het tekensetschema opgeven dat gebruikt wordt bij het schrijven van bytes naar het onderliggende bestand.

write (int)

de Java FileWriter write(int) methode schrijft de onderste 16 bit van de int naar de bestemming waar de FileWriter mee verbonden is, als een enkel teken. Hier is een voorbeeld van het schrijven van een enkel teken naar een Java FileWriter:

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

write (char)

de Java FileWriter heeft ook een write(char) methode die een array van tekens kan schrijven naar de bestemming waar FileWriter mee verbonden is. De methode write(char) geeft het aantal tekens terug dat daadwerkelijk naar de methode FileWriteris geschreven. Hier is een voorbeeld van het schrijven van een array van tekens naar een Java FileWriter:

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

Write Performance

het is sneller om een array van tekens naar een Java FileWriter te schrijven dan het schrijven van een teken tegelijk. De speedup kan heel belangrijk zijn-tot 10 x hoger of meer. Daarom wordt aanbevolen om waar mogelijk de write(char) – methoden te gebruiken.

de exacte snelheid die u krijgt hangt af van het onderliggende besturingssysteem en de hardware van de computer waarop u de Java-code uitvoert. De speedup is afhankelijk van problemen zoals geheugensnelheid, harde schijf snelheid en buffer maten etc.

transparante Buffering via BufferedWriter

u kunt transparante buffering van naar een Java FileWriter Geschreven bytes krijgen door deze in een Java BufferedWriter te wikkelen . Alle bytes geschreven naar de BufferedWriter zullen eerst gebufferd worden in een interne byte array in de BufferedWriter. Als de buffer vol is, wordt de buffer in één keer doorgespoeld naar de onderliggende FileWriter. Hier is een voorbeeld van het inpakken van een Java FileWriter in een BufferedWriter:

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

u kunt meer lezen over de BufferedWriter in mijn bufferedwriter tutorial.

flush ()

de Java FileWriter’s flush() methode spoelt alle naar het FileWriter geschreven gegevens naar het onderliggende bestand. De gegevens kunnen ergens in het OS-geheugen worden gebufferd, zelfs als uw Java-code het naar FileWriterheeft geschreven. Door flush() aan te roepen kunt u er zeker van zijn dat alle gebufferde gegevens naar de schijf worden doorgespoeld (geschreven). Hier is een voorbeeld van het spoelen van gegevens geschreven naar een Java FileWriter door het aanroepen van de flush() methode:

fileWriter.flush();

het sluiten van een FileWriter

wanneer u klaar bent met het schrijven van karakters naar een Java FileWriter, moet u eraan denken om het te sluiten. Het sluiten van een FileWriter wordt gedaan door de close() methode aan te roepen. Zo ziet het sluiten van een Java FileWriter eruit:

fileWriter.close();

u kunt ook gebruik maken van de try-with-resources constructie geïntroduceerd in Java 7. Hier ziet u hoe u een FileWriter looks kunt gebruiken en sluiten met de constructie try-with-resources:

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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.