How can I store and retrieve Unicode or Double Byte data in a file using the java.io libraries?
Created May 4, 2012
Joe Sam Shirah Java supports a number of encodings for use with InputStreamReaders and OutputStreamWriters. By using these classes, it's easy to read and write Unicode or any other supported encodings. Here's some code that writes a Unicode string to a file and then reads it back in. Please note that the sample's emphasis is on Unicode functionality -- obviously more care should be taken with exceptions and file closings in a production program:
import java.io.*; public class WRUni { public static void main(String[] args) { FileOutputStream fos = null; OutputStreamWriter osw = null; BufferedWriter bw = null; FileInputStream fis = null; InputStreamReader isr = null; BufferedReader br = null; String sUni = null; try { // write a UniCode string to a file fos = new FileOutputStream( "javauni.txt" ); osw = new OutputStreamWriter( fos, "Unicode" ); bw = new BufferedWriter( osw ); bw.write( "A1B2C3D4E5" ); bw.flush(); bw.close(); // read a Unicode string from a file fis = new FileInputStream( "javauni.txt" ); isr = new InputStreamReader( fis, "Unicode" ); br = new BufferedReader( isr ); while( true ) { try { sUni = br.readLine(); if( sUni == null ) { break; } System.out.println( "br value: " + sUni ); } catch( Exception ae ) { System.out.println("ae: " + ae ); break; } } // end while br.close(); } catch( Exception e ) { System.out.println("e: " + e ); } } // end main } // End class WRUni
For information on supported encodings by JDK version, check the following URLs -- note that the international version of the JDK is required to use all of the listed encodings.