/* Copy.java * * Bruce M. Bolden * October 21 1997 * Updated: February 18, 1998 * http://www.cs.uidaho.edu/~bruceb/ * */ /** Run Times (PowerMac 225 MHz 604e
In FileReaderWriter():
Copy time: 0.779
In FileStreamReadWrite():
Copy time: 1.534
In FileStreamInputPrint():
Copy time: 0.841
In BufferedFileStreamReadPrint():
Copy time: 0.262
*/ import java.io.*; public class Copy { /** Input file name. */ static String inFileName = "test.in"; static long tStart; static long tEnd; static double dT; /** Copy a file using four different methods. */ public static void main(String args[]) { FileReaderWriter(); FileStreamReadWrite(); FileStreamInputPrint(); BufferedFileStreamReadPrint(); System.out.println( "Done!" ); } /** Copy using File Reader/Writer classes. */ public static void FileReaderWriter() { String outFileName = "test.out"; FileReader fR; FileWriter fW; System.out.println( "In FileReaderWriter():" ); tStart = System.currentTimeMillis(); try { fR = new FileReader( inFileName ); fW = new FileWriter( outFileName ); int i = 0; while( i != -1 ) { i = fR.read(); if( i != -1 ) // remove this---see what happens fW.write( i ); } fW.close(); fR.close(); } catch (java.io.IOException ioe) { System.out.println( "IO error: " + ioe ); } tEnd = System.currentTimeMillis(); dT = (tEnd - tStart) / 1000.0; System.out.println( "\tCopy time: " + dT ); } /** Copy using FileInput/Output stream classes. */ public static void FileStreamReadWrite() { String outFileName = "test2.out"; FileInputStream fIS; FileOutputStream fOS; System.out.println( "In FileStreamReadWrite():" ); tStart = System.currentTimeMillis(); try { fIS = new FileInputStream( inFileName ); fOS = new FileOutputStream( outFileName ); int i = 0; while( i != -1 ) { i = fIS.read(); if( i != -1 ) // remove this---see what happens fOS.write( i ); } fIS.close(); fOS.close(); } catch (java.io.IOException ioe) { System.out.println( "IO error: " + ioe ); } tEnd = System.currentTimeMillis(); dT = (tEnd - tStart) / 1000.0; System.out.println( "\tCopy time: " + dT ); } /** Copy using Buffered Reader/Writer class. */ public static void BufferedFileStreamReadPrint() { String outFileName = "test3.out"; FileReader fIS; FileWriter fW; System.out.println( "In BufferedFileStreamReadPrint():" ); tStart = System.currentTimeMillis(); try { fIS = new FileReader( inFileName ); BufferedReader inStream = new BufferedReader( fIS ); fW = new FileWriter(outFileName); PrintWriter outStream = new PrintWriter(new BufferedWriter(fW)); // url.openStream String line; // while( (line = inStream.readLine()) != null ) { outStream.println( line ); } inStream.close(); outStream.close(); } catch (java.io.IOException ioe) { System.out.println( "IO error: " + ioe ); } tEnd = System.currentTimeMillis(); dT = (tEnd - tStart) / 1000.0; System.out.println( "\tCopy time: " + dT ); } /** Uses old style FileInput/Output Stream classes. */ public static void FileStreamInputPrint() { String outFileName = "test4.out"; FileInputStream fIS; FileOutputStream fOS; System.out.println( "In FileStreamInputPrint():" ); tStart = System.currentTimeMillis(); try { fIS = new FileInputStream( inFileName ); fOS = new FileOutputStream( outFileName ); DataInputStream inStream = new DataInputStream( fIS ); // PrintStream has been deprecated PrintStream outStream = new PrintStream( fOS ); String line; // readLine has been deprecated while( (line = inStream.readLine()) != null ) { outStream.println( line ); } inStream.close(); outStream.close(); } catch (java.io.IOException ioe) { System.out.println( "IO error: " + ioe ); } tEnd = System.currentTimeMillis(); dT = (tEnd - tStart) / 1000.0; System.out.println( "\tCopy time: " + dT ); } /* WriteInBinOctHex(); void WriteInBinOctHex() { int i; for( i = 0 ; i <= 16 ; i++ ) { System.out.print( i + " " ); System.out.print( Integer.toString(i,2) + " " ); System.out.print( Integer.toString(i,8) + " " ); System.out.println( Integer.toString(i,16) ); } } */ }