FileInputStream is meant for reading streams of raw bytes such as image data.
You can use FileReader to read streams of characters like .csv and .txt files as both file types are files that contain characters.
Unless you are working with binary data, such as image and sound files, you should use readers and writers (character streams) to read and write information for the following reasons:
- They can handle any character in the Unicode character set (while the byte streams are limited to ISO-Latin-1 8-bit bytes).
They are easier to internationalize because they are not dependent upon a specific character encoding.
They use buffering techniques internally and are therefore potentially much more efficient than byte streams.
Example
1) Copy an Image file using FileInputStream and FileOutputStream
The following code reads an image file mca1.png using FileInputStream and copies it using FileOutputStream.
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyImage { /** * @param args * @throws IOException **/ public static void main(String[] args) { FileInputStream fin = null; FileOutputStream fout = null; try { fin = new FileInputStream("/home/radhakrishnan/Desktop/mca1.png"); fout = new FileOutputStream( "/home/radhakrishnan/Desktop/mca1_copy.png"); int ch; while ((ch = fin.read()) != -1) { fout.write(ch); } System.out.println("Image copy completed"); } catch (IOException e) { System.out.println(e); } finally { try { fin.close(); fout.close(); } catch (IOException e) { e.printStackTrace(); } } } }
The output is
Image copy completed
2) Copy a text file using FileReader and FileWriter
import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class CopyText { /** * @param args * @throws IOException **/ public static void main(String[] args) { FileReader fread = null; FileWriter fwrite = null; try { fread = new FileReader("/home/radhakrishnan/Desktop/t1.txt"); fwrite = new FileWriter("/home/radhakrishnan/Desktop/t2.txt"); int ch; while ((ch = fread.read()) != -1) { fwrite.write(ch); System.out.print((char) ch); } System.out.println("text copy completed"); } catch (IOException e) { System.out.println(e); } finally { try { fread.close(); fwrite.close(); } catch (IOException e) { e.printStackTrace(); } } } }
The output is
Hello welcome to Java I/O programming
text copy completed
No comments:
Post a Comment