Java programs can perform I/O operations using byte streams, i.e., one byte at a time. All byte stream classes are descended from InputStream and OutputStream. There are several byte stream classes; here, we will focus on the file I/O byte streams, FileInputStream, and FileOutputStream. The following Java code copies one byte at a time from the input file and writes it to the output file (one byte at a time). It also handles IO exception during opening the file, processing the file, and closing the file.
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyBytes{
public static void main(String[] args){
FileInputStream in = null;
FileOutputStream out = null;
try{
in = new FileInputStream("testfiles/inputfile.txt");
out = new FileOutputStream("testfiles/outputfile.txt");
int c;
while((c=in.read()) != -1){
out.write(c);
}
}catch(IOException e){
System.err.println("IOException in processing files: " + e.getMessage());
}finally{
try{
if(in != null){
in.close();
System.out.println("All data read from input file");
}
if(out != null){
out.close();
System.out.println("All data written to output file");
}
}catch(IOException e){
System.err.println("IOException on closing files: " + e.getMessage());
}
}
}
}
run:
All data read from input file
All data written to output file
BUILD SUCCESSFUL (total time: 0 seconds)