Learn and Understand the FileWriter class

Learn and Understand the FileWriter class

In this tutorial, we'll learn and understand the FileWriter class present in the java.io package.

1. FileWriter

FileWriter is a specialized OutputStreamWriter for writing character files. It doesn't expose any new operations but works with the operations inherited from the OutputStreamWriter and Writer classes.

Until Java 11, the FileWriter worked with the default character encoding and default byte buffer size. However, Java 11 introduced four new constructors that accept a Charset, thereby allowing user-specified Charset. Unfortunately, we still cannot modify the byte buffer size, and it's set to 8192.

1.1. Instantiating the FileWriter

There are five constructors in the FileWriter class if we're using a Java version before Java 11.

Let’s have a glance at various constructors:

public FileWriter(String fileName) throws IOException {
    super(new FileOutputStream(fileName));
}

public FileWriter(String fileName, boolean append) throws IOException {
    super(new FileOutputStream(fileName, append));
}

public FileWriter(File file) throws IOException {
    super(new FileOutputStream(file));
}

public FileWriter(File file, boolean append) throws IOException {
    super(new FileOutputStream(file, append));
}

public FileWriter(FileDescriptor fd) {
    super(new FileOutputStream(fd));
}

Java 11 introduced four additional constructors:

public FileWriter(String fileName, Charset charset) throws IOException {
    super(new FileOutputStream(fileName), charset);
}

public FileWriter(String fileName, Charset charset, boolean append) throws IOException {
    super(new FileOutputStream(fileName, append), charset);
}

public FileWriter(File file, Charset charset) throws IOException {
    super(new FileOutputStream(file), charset);
}

public FileWriter(File file, Charset charset, boolean append) throws IOException {
    super(new FileOutputStream(file, append), charset);
}

1.2. Writing a _String _to a File

Let's now use one of the FileWriter constructors to create an instance of FileWriter and then write to a file:

try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt")) {
    fileWriter.write("Hello Folks!");
}

We've used the single argument constructor of the FileWriter that accepts a file name. We then use the write(String str) operation inherited from the Writer _class. **Since the _FileWriter is AutoCloseable, we've used try-with-resources so that we don't have to close the FileWriter explicitly**.

On executing the above code, the String will be written to the specified file:

Hello Folks!

The FileWriter does not guarantee whether the FileWriterTest.txt file will be available or be created. It is dependent on the underlying platform.

We must also make a note that certain platforms may allow only a single FileWriter instance to open the file. In that case, the other constructors of the FileWriter class will fail if the file involved is already open.

1.3. Appending a _String _to a File

We often need to append data to the existing contents of a file. Let's now see an example of a FileWriter that supports appending:

try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt", true)) {
    fileWriter.write("Hello Folks Again!");
}

As we can see, we've used the two-argument constructor that accepts a file name and a boolean flag append. Passing the flag append as true creates a FileWriter that allows us to append text to existing contents of a file.

On executing the code, we'll have the String appended to the existing contents of the specified file:

Hello Folks!Hello Folks Again!

2. Conclusion

In this article, we learned about the convenience class FileWriter and a couple of ways in which the FileWriter can be created. We then used it to write data to a file.

As always, the complete source code for the tutorial is available over on GitHub.

java

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

How to Install OpenJDK 11 on CentOS 8

What is OpenJDK? OpenJDk or Open Java Development Kit is a free, open-source framework of the Java Platform, Standard Edition (or Java SE).

Java Core (2020) | Java for beginners | Brush up your Java Skills | Get Hired

In this video we will learn about all the major concepts that come under Java Core . The course is very carefully designed and is made with keeping simplicit...

Best Ways To Improve Skills In Java and Python Programming

Join CETPA, India's best institute for Java online training and Certification Course. Enroll now to learn Core to Advanced Java & avail 50% discount on Java Online Course with Certificate.

Java Fundamentals: Learn Java for absolute beginners |Simpliv

Java Fundamentals: Learn Java for absolute beginners

Java For Loop Example | For Loop in Java Tutorial

Java For loop provides a concise way of writing the loop structure. For loop consumes the initialization, condition and increment/decrement in one line.