- Java Write To File Examples
- Write to file using BufferedWriter
- Write to file using PrintWriter
- Write to file using FileOutputStream
- Write to file using Files class
- Write to file using DataOutputStream
- Code to write file in java
- How to Read and Write Text File in Java
- 1. Reader, InputStreamReader, FileReader and BufferedReader
- 2. Writer, OutputStreamWriter, FileWriter and BufferedWriter
- 3. Character Encoding and Charset
- 4. Java Reading from Text File Example
- 5. Java Writing to Text File Example
- References:
- Related File IO Tutorials:
- Other Java File IO Tutorials:
- About the Author:
- Java Create and Write To Files
- Example
- Example
- Write To a File
- Example
Java Write To File Examples
In this post we will look at five different examples on how to write to a file using Java. The code sinppets check to see if the file exists before writing to the file, otherwise a file is created.
Write to file using BufferedWriter
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class WriteToFile < public static void main( String[] args ) < try < String content = "Content to write to file"; //Name and path of the file File file = new File("writefile.txt"); if(!file.exists())< file.createNewFile(); >FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); bw.write(content); bw.close(); > catch(IOException ex) < System.out.println("Exception occurred:"); ex.printStackTrace(); >> >
Note: If we want to append to a file, we need to initialize the FileWriter with the true parameter:
FileWriter fw = new FileWriter(file, true);
Write to file using PrintWriter
import java.io.*; public class WriteToFile < public static void main( String[] args ) < try < String content = "Content to write to file"; //Name and path of the file File file = new File("writefile.txt"); if(!file.exists())< file.createNewFile(); >FileWriter fw = new FileWriter(file); PrintWriter bw = new PrintWriter(fw); bw.write(content); bw.close(); > catch(IOException ex) < System.out.println("Exception occurred:"); ex.printStackTrace(); >> >
Write to file using FileOutputStream
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class WriteToFile < public static void main( String[] args ) < try < String content = "Content to write to file"; //Name and path of the file File file = new File("writefile.txt"); if(!file.exists())< file.createNewFile(); >FileOutputStream outStream = new FileOutputStream(file); byte[] strToBytes = content.getBytes(); outStream.write(strToBytes); outStream.close(); > catch(IOException ex) < System.out.println("Exception occurred:"); ex.printStackTrace(); >> >
Write to file using Files class
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class WriteToFile < public static void main( String[] args ) < Path path = Paths.get("writefile.txt"); String content = "Content to write to file"; try < byte[] bytes = content.getBytes(); Files.write(path, bytes); >catch(IOException ex) < System.out.println("Exception occurred:"); ex.printStackTrace(); >> >
Write to file using DataOutputStream
import java.io.*; public class WriteToFile < public static void main( String[] args ) < String content = "Content to write to file"; try < File file = new File("writefile.txt"); if(!file.exists())< file.createNewFile(); >FileOutputStream fos = new FileOutputStream(file); BufferedOutputStream bos = new BufferedOutputStream(fos); DataOutputStream dataOutStream = new DataOutputStream(bos); dataOutStream.writeUTF(content); dataOutStream.close(); > catch(IOException ex) < System.out.println("Exception occurred:"); ex.printStackTrace(); >> >
Code to write file in java
- Introduction to Java
- The complete History of Java Programming Language
- C++ vs Java vs Python
- How to Download and Install Java for 64 bit machine?
- Setting up the environment in Java
- How to Download and Install Eclipse on Windows?
- JDK in Java
- How JVM Works – JVM Architecture?
- Differences between JDK, JRE and JVM
- Just In Time Compiler
- Difference between JIT and JVM in Java
- Difference between Byte Code and Machine Code
- How is Java platform independent?
- Decision Making in Java (if, if-else, switch, break, continue, jump)
- Java if statement with Examples
- Java if-else
- Java if-else-if ladder with Examples
- Loops in Java
- For Loop in Java
- Java while loop with Examples
- Java do-while loop with Examples
- For-each loop in Java
- Continue Statement in Java
- Break statement in Java
- Usage of Break keyword in Java
- return keyword in Java
- Object Oriented Programming (OOPs) Concept in Java
- Why Java is not a purely Object-Oriented Language?
- Classes and Objects in Java
- Naming Conventions in Java
- Java Methods
- Access Modifiers in Java
- Java Constructors
- Four Main Object Oriented Programming Concepts of Java
- Inheritance in Java
- Abstraction in Java
- Encapsulation in Java
- Polymorphism in Java
- Interfaces in Java
- ‘this’ reference in Java
How to Read and Write Text File in Java
In this tutorial, we show you how to read from and write to text (or character) files using classes available in the java.io package. First, let’s look at the different classes that are capable of reading and writing character streams.
1. Reader, InputStreamReader, FileReader and BufferedReader
Reader is the abstract class for reading character streams. It implements the following fundamental methods:
- read() : reads a single character.
- read(char[]) : reads an array of characters.
- skip(long) : skips some characters.
- close() : closes the stream.
FileReader is a convenient class for reading text files using the default character encoding of the operating system.
BufferedReader reads text from a character stream with efficiency (characters are buffered to avoid frequently reading from the underlying stream) and provides a convenient method for reading a line of text readLine() .
The following diagram show relationship of these reader classes in the java.io package:
2. Writer, OutputStreamWriter, FileWriter and BufferedWriter
Writer is the abstract class for writing character streams. It implements the following fundamental methods:
- write(int) : writes a single character.
- write(char[]) : writes an array of characters.
- write(String) : writes a string.
- close() : closes the stream.
FileWriter is a convenient class for writing text files using the default character encoding of the operating system.
BufferedWriter writes text to a character stream with efficiency (characters, arrays and strings are buffered to avoid frequently writing to the underlying stream) and provides a convenient method for writing a line separator: newLine() .
The following diagram show relationship of these writer classes in the java.io package:
3. Character Encoding and Charset
When constructing a reader or writer object, the default character encoding of the operating system is used (e.g. Cp1252 on Windows):
FileReader reader = new FileReader("MyFile.txt"); FileWriter writer = new FileWriter("YourFile.txt");
So if we want to use a specific charset, use an InputStreamReader or OutputStreamWriter instead. For example:
InputStreamReader reader = new InputStreamReader( new FileInputStream("MyFile.txt"), "UTF-16");
And the following statement constructs a writer with the UTF-8 encoding:
OutputStreamWriter writer = new OutputStreamWriter( new FileOutputStream("YourFile.txt"), "UTF-8");
In case we want to use a BufferedReader , just wrap the InputStreamReader inside, for example:
InputStreamReader reader = new InputStreamReader( new FileInputStream("MyFile.txt"), "UTF-16"); BufferedReader bufReader = new BufferedReader(reader);
OutputStreamWriter writer = new OutputStreamWriter( new FileOutputStream("YourFile.txt"), "UTF-8"); BufferedWriter bufWriter = new BufferedWriter(writer);
4. Java Reading from Text File Example
The following small program reads every single character from the file MyFile.txt and prints all the characters to the output console:
package net.codejava.io; import java.io.FileReader; import java.io.IOException; /** * This program demonstrates how to read characters from a text file. * @author www.codejava.net * */ public class TextFileReadingExample1 < public static void main(String[] args) < try < FileReader reader = new FileReader("MyFile.txt"); int character; while ((character = reader.read()) != -1) < System.out.print((char) character); >reader.close(); > catch (IOException e) < e.printStackTrace(); >> >
package net.codejava.io; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; /** * This program demonstrates how to read characters from a text file using * a specified charset. * @author www.codejava.net * */ public class TextFileReadingExample2 < public static void main(String[] args) < try < FileInputStream inputStream = new FileInputStream("MyFile.txt"); InputStreamReader reader = new InputStreamReader(inputStream, "UTF-16"); int character; while ((character = reader.read()) != -1) < System.out.print((char) character); >reader.close(); > catch (IOException e) < e.printStackTrace(); >> >
And the following example uses a BufferedReader to read a text file line by line (this is the most efficient and preferred way):
package net.codejava.io; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; /** * This program demonstrates how to read characters from a text file * using a BufferedReader for efficiency. * @author www.codejava.net * */ public class TextFileReadingExample3 < public static void main(String[] args) < try < FileReader reader = new FileReader("MyFile.txt"); BufferedReader bufferedReader = new BufferedReader(reader); String line; while ((line = bufferedReader.readLine()) != null) < System.out.println(line); >reader.close(); > catch (IOException e) < e.printStackTrace(); >> >
5. Java Writing to Text File Example
In the following example, a FileWriter is used to write two words “Hello World” and “Good Bye!” to a file named MyFile.txt :
package net.codejava.io; import java.io.FileWriter; import java.io.IOException; /** * This program demonstrates how to write characters to a text file. * @author www.codejava.net * */ public class TextFileWritingExample1 < public static void main(String[] args) < try < FileWriter writer = new FileWriter("MyFile.txt", true); writer.write("Hello World"); writer.write("\r\n"); // write new line writer.write("Good Bye!"); writer.close(); >catch (IOException e) < e.printStackTrace(); >> >
Note that, a writer uses default character encoding of the operating system by default. It also creates a new file if not exits, or overwrites the existing one. If you want to append text to an existing file, pass a boolean flag of true to constructor of the writer class:
FileWriter writer = new FileWriter("MyFile.txt", true);
The following example uses a BufferedReader that wraps a FileReader to append text to an existing file:
package net.codejava.io; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; /** * This program demonstrates how to write characters to a text file * using a BufferedReader for efficiency. * @author www.codejava.net * */ public class TextFileWritingExample2 < public static void main(String[] args) < try < FileWriter writer = new FileWriter("MyFile.txt", true); BufferedWriter bufferedWriter = new BufferedWriter(writer); bufferedWriter.write("Hello World"); bufferedWriter.newLine(); bufferedWriter.write("See You Again!"); bufferedWriter.close(); >catch (IOException e) < e.printStackTrace(); >> >
This is the preferred way to write to text file because the BufferedReader provides efficient way for writing character streams.
And the following example specifies specific character encoding (UTF-16) when writing to the file:
package net.codejava.io; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; /** * This program demonstrates how to write characters to a text file using * a specified charset. * @author www.codejava.net * */ public class TextFileWritingExample3 < public static void main(String[] args) < try < FileOutputStream outputStream = new FileOutputStream("MyFile.txt"); OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-16"); BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); bufferedWriter.write("Xin chào"); bufferedWriter.newLine(); bufferedWriter.write("Hẹn gặp lại!"); bufferedWriter.close(); >catch (IOException e) < e.printStackTrace(); >> >
NOTE: From Java 7, you can use try-with-resources statement to simplify the code of opening and closing the reader/writer. For example:
try (FileReader reader = new FileReader(«MyFile.txt»)) < int character; while ((character = reader.read()) != -1) < System.out.print((char) character); >> catch (IOException e)
References:
Related File IO Tutorials:
Other Java File IO Tutorials:
About the Author:
Nam Ha Minh is certified Java programmer (SCJP and SCWCD). He started programming with Java in the time of Java 1.4 and has been falling in love with Java since then. Make friend with him on Facebook and watch his Java videos you YouTube.
Java Create and Write To Files
To create a file in Java, you can use the createNewFile() method. This method returns a boolean value: true if the file was successfully created, and false if the file already exists. Note that the method is enclosed in a try. catch block. This is necessary because it throws an IOException if an error occurs (if the file cannot be created for some reason):
Example
import java.io.File; // Import the File class import java.io.IOException; // Import the IOException class to handle errors public class CreateFile < public static void main(String[] args) < try < File myObj = new File("filename.txt"); if (myObj.createNewFile()) < System.out.println("File created: " + myObj.getName()); >else < System.out.println("File already exists."); >> catch (IOException e) < System.out.println("An error occurred."); e.printStackTrace(); >> >
To create a file in a specific directory (requires permission), specify the path of the file and use double backslashes to escape the » \ » character (for Windows). On Mac and Linux you can just write the path, like: /Users/name/filename.txt
Example
File myObj = new File("C:\\Users\\MyName\\filename.txt");
Write To a File
In the following example, we use the FileWriter class together with its write() method to write some text to the file we created in the example above. Note that when you are done writing to the file, you should close it with the close() method:
Example
import java.io.FileWriter; // Import the FileWriter class import java.io.IOException; // Import the IOException class to handle errors public class WriteToFile < public static void main(String[] args) < try < FileWriter myWriter = new FileWriter("filename.txt"); myWriter.write("Files in Java might be tricky, but it is fun enough!"); myWriter.close(); System.out.println("Successfully wrote to the file."); >catch (IOException e) < System.out.println("An error occurred."); e.printStackTrace(); >> >
To read the file above, go to the Java Read Files chapter.