Java - Writer class



Introduction

The Java Writer class is a abstract class for writing to character streams.

Class declaration

Following is the declaration for Java.io.Writer class −

 public abstract class Writer extends Object implements Appendable, Closeable, Flushable 

Field

Following are the fields for Java.io.Writer class −

  • protected Object lock − This is the object used to synchronize operations on this stream.

Class constructors

Sr.No. Constructor & Description
1

protected Writer()

This creates a new character-stream writer whose critical sections will synchronize on the writer itself.

2

protected Writer(Object lock)

This creates a new character-stream writer whose critical sections will synchronize on the given object.

Class methods

Sr.No. Method & Description
1 Writer append(char c)

This method appends the specified character to this writer.

2 Writer append(CharSequence csq)

This method appends the specified character sequence to this writer.

3 Writer append(CharSequence csq, int start, int end)

This method appends a subsequence of the specified character sequence to this writer.

4 abstract void close()

This method loses the stream, flushing it first.

5 abstract void flush()

This method flushes the stream.

6 void write(char[] cbuf)

This method writes an array of characters.

7 abstract void write(char[] cbuf, int off, int len)

This method writes a portion of an array of characters.

8 void write(int c)

This method writes a single character.

9 void write(String str)

This method writes a string.

10 void write(String str, int off, int len)

This method writes a portion of a string.

Methods inherited

This class inherits methods from the following classes −

  • Java.io.Object

Example - Using StringWriter to Append Characters

The following example shows the usage of Writer append(char c) method.

WriterDemo.java

 package com.tutorialspoint; import java.io.StringWriter; public class WriterDemo { public static void main(String[] args) { StringWriter writer = new StringWriter(); writer.append('H'); writer.append('i'); writer.append('!'); System.out.println("Output: " + writer.toString()); } } 

Output

Let us compile and run the above program, this will produce the following result−

 Output: Hi! 

Explanation

  • Each append(char) call adds a single character.

  • "H" + "i" + "!" = "Hi!" is stored in the writer.

Example - Using FileWriter with close()

The following example shows the usage of Writer close() method.

WriterDemo.java

 package com.tutorialspoint; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; public class WriterDemo { public static void main(String[] args) { try { Writer writer = new FileWriter("example1.txt"); writer.write("Hello, this is a test."); writer.close(); // Closing the writer to release resources System.out.println("File written and writer closed."); } catch (IOException e) { e.printStackTrace(); } } } 

Output

Let us compile and run the above program, this will produce the following result−

 File written and writer closed. 

Explanation

  • A FileWriter writes text to a file.

  • After writing, writer.close() is called to−

    • Flush the stream (if needed),

    • Release file locks and system resources,

    • Prevent memory leaks.

  • Writing again after close() will throw an exception.

Example - Using BufferedWriter with flush()

The following example shows the usage of Writer flush() method.

WriterDemo.java

 package com.tutorialspoint; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; public class WriterDemo { public static void main(String[] args) { try { Writer writer = new BufferedWriter(new FileWriter("flush1.txt")); writer.write("First part of the content."); writer.flush(); // Forces the buffer to write to file System.out.println("Buffer flushed after first write."); writer.write(" Second part added."); writer.flush(); // Flush again before closing System.out.println("Buffer flushed after second write."); writer.close(); } catch (IOException e) { e.printStackTrace(); } } } 

Output

Let us compile and run the above program, this will produce the following result−

 Buffer flushed after first write. Buffer flushed after second write. 

Explanation

  • BufferedWriter uses an internal buffer.

  • flush() ensures the content is written immediately to the file, even if the buffer isn't full.

  • Useful when you want to make sure data is written without closing the stream.

Advertisements