Reading and Writing to Text Files 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. Kickoff, allow'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 graphic symbol streams. Information technology 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.

InputStreamReader is a bridge from byte streams to character streams. It converts bytes into characters using a specified charset. The charset can exist default character encoding of the operating organization, or tin can be specified explicitly when creating an InputStreamReader .

FileReader is a convenient grade for reading text files using the default grapheme 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 user-friendly method for reading a line of text readLine() .

The post-obit diagram show human relationship of these reader classes in the java.io package:

Reader Hierarchy

2. Writer, OutputStreamWriter, FileWriter and BufferedWriter

Writer is the abstract class for writing grapheme streams. It implements the following key methods:

  • write(int) : writes a unmarried character.
  • write(char[]) : writes an array of characters.
  • write(String) : writes a string.
  • shut() : closes the stream.

OutputStreamWriter is a span from byte streams to character streams. Characters are encoded into bytes using a specified charset. The charset tin can be default character encoding of the operating system, or can be specified explicitly when creating an OutputStreamWriter .

FileWriter is a convenient class for writing text files using the default grapheme encoding of the operating system.

BufferedWriter writes text to a character stream with efficiency (characters, arrays and strings are buffered to avert oft writing to the underlying stream) and provides a convenient method for writing a line separator: newLine() .

The post-obit diagram show human relationship of these writer classes in the java.io package:

Writer Hierarchy

3. Graphic symbol Encoding and Charset

When constructing a reader or writer object, the default character encoding of the operating arrangement is used (e.g. Cp1252 on Windows):

FileReader reader = new FileReader("MyFile.txt"); FileWriter writer = new FileWriter("YourFile.txt");

And so if nosotros want to use a specific charset, apply an InputStreamReader or OutputStreamWriter instead. For example:

InputStreamReader reader = new InputStreamReader( 					new FileInputStream("MyFile.txt"), "UTF-xvi");

That creates a new reader with the Unicode character encoding UTF-sixteen.

And the following statement constructs a author with the UTF-8 encoding:

OutputStreamWriter writer = new OutputStreamWriter( 					new FileOutputStream("YourFile.txt"), "UTF-eight");

In case we desire to utilize a BufferedReader , merely wrap the InputStreamReader inside, for example:

InputStreamReader reader = new InputStreamReader( 		new FileInputStream("MyFile.txt"), "UTF-16");  BufferedReader bufReader = new BufferedReader(reader);

And for a BufferedWriter example:

OutputStreamWriter author = new OutputStreamWriter( 					new FileOutputStream("YourFile.txt"), "UTF-8");  BufferedWriter bufWriter = new BufferedWriter(author);

Now, permit'southward look at some complete examples.

4. Java Reading from Text File Case

The following minor program reads every single character from the file MyFile.txt and prints all the characters to the output console:

parcel net.codejava.io;  import java.io.FileReader; import java.io.IOException;  /**  * This programme demonstrates how to read characters from a text file.  * @author www.codejava.net  *  */ public class TextFileReadingExample1 {  	public static void main(Cord[] args) { 		try { 			FileReader reader = new FileReader("MyFile.txt"); 			int character;  			while ((character = reader.read()) != -i) { 				System.out.print((char) character); 			} 			reader.close();  		} catch (IOException east) { 			eastward.printStackTrace(); 		} 	}  }

The following example reads a text file with supposition that the encoding is UTF-sixteen:

package net.codejava.io;  import coffee.io.FileInputStream; import java.io.IOException; import coffee.io.InputStreamReader;  /**  * This program demonstrates how to read characters from a text file using  * a specified charset.  * @writer www.codejava.net  *  */ public class TextFileReadingExample2 {  	public static void main(String[] args) { 		attempt { 			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.shut();  		} catch (IOException e) { 			eastward.printStackTrace(); 		} 	}  }

And the following example uses a BufferedReader to read a text file line by line (this is the almost efficient and preferred way):

packet net.codejava.io;  import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException;  /**  * This programme demonstrates how to read characters from a text file  * using a BufferedReader for efficiency.  * @author www.codejava.net  *  */ public grade TextFileReadingExample3 {  	public static void main(Cord[] args) { 		try { 			FileReader reader = new FileReader("MyFile.txt"); 			BufferedReader bufferedReader = new BufferedReader(reader);  			Cord line;  			while ((line = bufferedReader.readLine()) != null) { 				Organization.out.println(line); 			} 			reader.close();  		} catch (IOException eastward) { 			e.printStackTrace(); 		} 	}  }

5. Coffee Writing to Text File Instance

In the following example, a FileWriter is used to write two words "Hullo World" and "Good Bye!" to a file named MyFile.txt:

parcel net.codejava.io;  import java.io.FileWriter; import coffee.io.IOException;  /**  * This program demonstrates how to write characters to a text file.  * @writer www.codejava.net  *  */ public course TextFileWritingExample1 {  	public static void main(String[] args) { 		try { 			FileWriter author = new FileWriter("MyFile.txt", true); 			writer.write("Hello Earth"); 			writer.write("\r\n");	// write new line 			writer.write("Good Adieu!"); 			writer.shut(); 		} take hold of (IOException e) { 			e.printStackTrace(); 		}  	}  }

Note that, a author uses default character encoding of the operating system by default. It besides creates a new file if not exits, or overwrites the existing one. If you want to suspend text to an existing file, pass a boolean flag of true to constructor of the author form:

FileWriter author = 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 coffee.io.FileWriter; import coffee.io.IOException;  /**  * This program demonstrates how to write characters to a text file  * using a BufferedReader for efficiency.  * @author www.codejava.net  *  */ public form TextFileWritingExample2 {  	public static void main(String[] args) { 		try { 			FileWriter writer = new FileWriter("MyFile.txt", truthful); 			BufferedWriter bufferedWriter = new BufferedWriter(writer);  			bufferedWriter.write("Hi Globe"); 			bufferedWriter.newLine(); 			bufferedWriter.write("Run into You lot Again!");  			bufferedWriter.close(); 		} catch (IOException e) { 			east.printStackTrace(); 		}  	}  }

This is the preferred way to write to text file because the BufferedReader provides efficient way for writing graphic symbol streams.

And the post-obit example specifies specific graphic symbol encoding (UTF-sixteen) when writing to the file:

package net.codejava.io;  import coffee.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) { 		endeavor { 			FileOutputStream outputStream = new FileOutputStream("MyFile.txt"); 			OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-xvi"); 			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(); 		} 		 	} }

This program writes some Unicode string (Vietnamese) to the specified text file.

NOTE: From Java 7, you tin use endeavour-with-resource statement to simplify the code of opening and closing the reader/writer. For case:

endeavour (FileReader reader = new FileReader("MyFile.txt")) { 	int graphic symbol;  	while ((character = reader.read()) != -1) { 		Organisation.out.print((char) character); 	} } catch (IOException e) { 	east.printStackTrace(); }

References:

  • Lesson: Basic I/O (The Java Tutorials)

Related File IO Tutorials:

  • How to Read and Write Binary Files in Java
  • How to read text file line by line in Java
  • Java IO FileReader and FileWriter Examples

Other Java File IO Tutorials:

  • How to list files and directories in a directory in Java
  • Java IO - Mutual File and Directory Operations Examples
  • Java Serialization Basic Example
  • Agreement Java Externalization with Examples
  • How to execute Operating System Commands in Coffee
  • 3 ways for reading user'south input from panel in Coffee
  • File change notification example with Watch Service API
  • Java Scanner Tutorial and Code Examples
  • How to compress files in Nix format in Java
  • How to extract ZIP file in Java

Most the Author:

Nam Ha Minh is certified Java programmer (SCJP and SCWCD). He started programming with Coffee in the time of Java 1.four and has been falling in love with Java since then. Make friend with him on Facebook and watch his Java videos you YouTube.

Add comment

marquezsentort.blogspot.com

Source: https://www.codejava.net/java-se/file-io/how-to-read-and-write-text-file-in-java

Belum ada Komentar untuk "Reading and Writing to Text Files in Java"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel