Java FileWriter
- De Java FileWriter-klasse maakt deel uit van het
java.io
-pakket. - FileWriter is een subklasse van de klasse
java.io.OutputStreamWriter
. - FileWriter is bedoeld voor het schrijven van stromen van tekens.
- FileWriter wordt gebruikt om naar tekstbestanden te schrijven. De
write()
-methoden van FileWriter stellen u in staat tekens of tekenreeksen naar een bestand te schrijven. - FileWriters worden meestal omwikkeld door Writer-objecten van een hoger niveau, zoals BufferedWriter of
PrintWriter
, die betere prestaties bieden en methoden van een hoger niveau met meer flexibiliteit om gegevens te schrijven.
FileWriter-constructors
FileWriter(File file)
: Maakt eenFileWriter
-object aan met het gespecificeerde File-object. Het werpt eenIOException
op als het bestand bestaat maar een directory is in plaats van een gewoon bestand, of als het niet bestaat maar niet kan worden aangemaakt, of niet kan worden geopend om een andere reden.FileWriter(File file, boolean append)
: Maakt een FileWriter-object met het opgegeven File-object. Als het tweede argument waar is, worden bytes aan het einde van het bestand geschreven in plaats van aan het begin. Het gooit een IOException als het bestand bestaat maar een map is in plaats van een regulier bestand, of niet bestaat maar niet kan worden gemaakt, of om welke andere reden dan ook niet kan worden geopend.FileWriter(FileDescriptor fd)
: Maakt een FileWriter-object dat is gekoppeld aan het opgegeven bestand descriptor.FileWriter(String fileName)
: Maakt een FileWriter-object met de opgegeven bestandsnaam. Het gooit eenIOException
als het genoemde bestand bestaat maar een map is in plaats van een regulier bestand, of niet bestaat maar niet kan worden gemaakt, of om welke andere reden dan ook niet kan worden geopend.FileWriter(String fileName, boolean append)
: Maakt een FileWriter-object met de opgegeven bestandsnaam met een boolean die aangeeft of de gegevens moeten worden toegevoegd. Als het tweede argument waar is, worden de gegevens aan het einde van het bestand geschreven in plaats van aan het begin. Het gooit een IOException als het genoemde bestand bestaat maar een map is in plaats van een regulier bestand, of niet bestaat maar niet kan worden gemaakt, of om welke andere reden dan ook niet kan worden geopend.
Java FileWriter-voorbeeld
FileWriter erft de methode van de klassen java.io.OutputStreamWriter
en java.io.Writer
. Laten we eens kijken naar de onderstaande methoden met voorbeelden.
write(int c)
Deze methode schrijft een enkel karakter gespecificeerd door int c.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
import java.io.IOException;
/**
* Java write file using FileWriter write method
*
* @author pankaj
*
*/
public class FileWriterWriteIntExample {
public static void main(String[] args) {
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter("D:/data/file.txt");
// overgeërfde methode van java.io.OutputStreamWriter
fileWriter.write(65);
fileWriter.write(66);
fileWriter.write(67);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (fileWriter != null) {
fileWriter.flush();
fileWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
FileWriter implementeert de
AutoCloseable
-interface, daarom kunnen we try with resources gebruiken bij het gebruik van de FileWriter-klasse.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write method using try with resource
*
* @author pankaj
*
*/
public class FileWriterWriteIntTryWithResource {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
// overgeërfde methode van java.io.OutputStreamWriter
fileWriter.write(65);
fileWriter.write(66);
fileWriter.write(67);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Let op: In het bovenstaande programma zal fileWriter.write(65)
A in het bestand schrijven omdat 65 de decimale waarde is voor het karakter A. Daarom zal het gehele getal 65 worden omgezet in het karakter A, en hetzelfde geldt voor de andere.
write(String str, int off, int len)
Deze methode schrijft een gedeelte van de String str
vanaf int off
tot int len
.
- str: String om te worden geschreven
- off: Offset vanaf waar lezen van tekens moet beginnen
- len: Aantal tekens om te schrijven
Als de waarde van de len-parameter negatief is, worden er geen tekens geschreven.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write(String s, int off, int len) method
*
* @author pankaj
*
*/
public class FileWriterWriteStringExample {
public static void main(String[] args) {
String data = "This is FileWriter Example.";
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//overgeërfde methode van java.io.OutputStreamWriter
fileWriter.write(data, 8, 10);
} catch (Exception e) {
e.printStackTrace();
}
}
}
write(char[] cbuf, int off, int len)
Deze methode schrijft een deel van een karakterreeksarray gespecificeerd door char[] cbuf
van int off
tot int len
.
- cbuf: Een karakterreeksarray
- off: Offset van waaruit het lezen van tekens moet beginnen
- len : Aantal tekens om te schrijven
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write(char[] cbuf, int off, int len) method
*
* @author pankaj
*
*/
public class FileWriterWriteCharArray {
public static void main(String[] args) {
char[] data = "This is FileWriter Example.".toCharArray();
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//overgeërfde methode van java.io.OutputStreamWriter
fileWriter.write(data, 8, 10);
} catch (Exception e) {
e.printStackTrace();
}
}
}
write(char[] cbuf)
Deze methode schrijft de karakterreeksarray gespecificeerd door cbuf.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write(char[] cbuf) method
*
* @author pankaj
*
*/
public class FileWriterWriteCharArrayExample {
public static void main(String[] args) {
char[] data = "This is FileWriter Example.".toCharArray();
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//overgeërfde methode van java.io.Writer
fileWriter.write(data);
} catch (Exception e) {
e.printStackTrace();
}
}
}
write(String str)
Deze methode schrijft een stringwaarde naar het bestand gespecificeerd door str
.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write(String str) method
*
* @author pankaj
*
*/
public class FileWriterWriteString {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//overgeërfde methode van java.io.Writer
fileWriter.write("JournalDev");
} catch (Exception e) {
e.printStackTrace();
}
}
}
append(char c)
Deze methode voegt het gespecificeerde karakter toe aan deze schrijver waar c
het 16-bits karakter is om toe te voegen.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter append(char c) method
*
* @author pankaj
*
*/
public class FileWriterAppendCharacter {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
// geërfde methode van java.io.Writer
fileWriter.write("JournalDev");
fileWriter.append('C');
} catch (Exception e) {
e.printStackTrace();
}
}
}
flush()
Deze methode spoelt de stream door. Wanneer de flush()
-methode wordt aangeroepen, schrijft deze onmiddellijk de gegevens naar het uitvoerbestand.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file with FileWriter flush() method
*
* @author pankaj
*
*/
public class FileWriterFlushExample {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
// geërfde methode van java.io.Writer
fileWriter.write("JournalDev");
// geërfde methode van java.io.OutputStreamWriter
fileWriter.flush();
fileWriter.write(" Tutorials");
fileWriter.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
close()
Deze methode spoelt de stream door voordat deze wordt gesloten. Zodra de stream is gesloten, zal het oproepen van de write()
– of flush()
-methode een IOException
veroorzaken. Het sluiten van een eerder gesloten stream heeft geen effect.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file with FileWriter close() method
*
* @author pankaj
*
*/
public class FileWriterCloseExample {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
// geërfde methode van java.io.Writer
fileWriter.write("JournalDev");
// geërfde methode van java.io.OutputStreamWriter
fileWriter.close();;
fileWriter.write(" Tutorials");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Output:
java.io.IOException: Stream closed
at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.Writer.write(Unknown Source)
at com.journaldev.examples.FileWriterCloseExample.main(FileWriterCloseExample.java:20)
FileWriter vs FileOutputStream
- FileWriter is bedoeld voor het schrijven van streams van tekens, terwijl FileOutputStream wordt gebruikt voor het schrijven van streams van ruwe bytes.
- FileWriter behandelt 16-bits tekens, terwijl FileOutputStream omgaat met 8-bits bytes.
- FileWriter kan Unicode-tekens verwerken, terwijl FileOutputStream bytes naar een bestand schrijft en geen tekens of strings accepteert, daarom moet het worden ingepakt door
OutputStreamWriter
om teksten te accepteren.
Bekijk ook java write file voor meer informatie over het schrijven van bestanden in Java. Dat is alles voor Java FileWriter, ik hoop dat er niets belangrijks is overgeslagen.
Je kunt alle voorbeelden downloaden van onze GitHub Repository.
Referentie: API Doc
Source:
https://www.digitalocean.com/community/tutorials/java-filewriter-example