How can I store and retrieve Unicode or Double Byte data in a file using the java.io libraries?
Created Jun 9, 2000
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:
JDK 1.1
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.