How to append content to file in Java

A useful technique to append new content to the end of a file while preserving its existing contents involves the utilization of the PrintWriter class. By employing the PrintWriter(file, true) constructor, developers can create an instance of PrintWriter that allows for the appending of new content to the end of a file.

import java.io.*; public class TestClass{ public static void main(String[] args) { try { PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("in.txt", true))); //the true will append the new data out.println("New line append here !!"); out.close(); } catch (IOException e) { System.out.println(e); } } }

When instantiating a PrintWriter object with this constructor, the second argument, true, instructs the PrintWriter to append the output to the existing content of the specified file. In essence, this approach ensures that the previous contents of the file remain intact, while the newly provided content is seamlessly added to the end of the file.

Developers can conveniently append data or information to the end of a file without overwriting or losing any existing content. This functionality proves particularly valuable when working with log files, data archives, or any scenario where the preservation of historical information is crucial.

try-with-resources statement

An important enhancement introduced in Java 7 is the try-with-resources statement, which provides a more concise and robust approach for managing resources that need to be closed, such as file streams or database connections. With the try-with-resources statement, the burden of manually closing the declared resources is alleviated, as it is handled automatically by the Java runtime.

By utilizing the try-with-resources statement, developers can declare one or more resources within the try statement's parentheses. These resources are then automatically closed at the end of the block, whether an exception occurs or not. This eliminates the need for a separate finally block dedicated to resource cleanup, streamlining the code and reducing verbosity.

import java.io.*; public class TestClass{ public static void main(String[] args) { try(PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("in.txt", true)))) { out.println("New line append here !!"); }catch (IOException e) { System.err.println(e); } } }

To use this feature effectively, the resources declared within the try-with-resources statement must implement the AutoCloseable interface, which includes common resource types such as InputStream, OutputStream, Reader, and Writer.