BufferdInputStreamは使用方法はFileInputStreamと同じですが、FileInputStreamはreadメソッドが呼ばれるたびにファイルアクセスするのに対し
BufferedInputStreamは1回のreadメソッドで数バイトをあらかじめ取得しバッファに保存します。そのバッファから値を取り出し返します。
BufferdOutputStreamのwriteメソッドはバッファに対し書き込みを行い、flushメソッドでファイルに書き込みます。
バイナリファイルから1バイトづつ読み込み、1バイトづつ書き込みますで使用したコードを
BufferedInputStreamとBufferedOutputStreamを使用して書き換えます。
下記のコードはBufferedInputStreamとBufferedOutputStreamを使用して「D:/Sample1.jpg」より1バイト読み込み、「D:/CopySample1.jpg」に1バイト書き込みます。
package FileAccess; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class BinaryFileSample02 { public static void main(String args[]){ new BinaryFileSample01(); } public BinaryFileSample02(){ FileInputStream fip = null; BufferedInputStream bis = null; FileOutputStream fos = null; BufferedOutputStream bos = null; try { fip = new FileInputStream("D:/Sample1.jpg"); bis = new BufferedInputStream(fip); fos = new FileOutputStream("D:/CopySample1.jpg"); bos = new BufferedOutputStream(fos); int data; while ((data = bis.read()) != -1){ bos.write(data); } bos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { if (bis != null){ bis.close(); } } catch (IOException e) { e.printStackTrace(); } try { if (bos != null){ bos.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
0 件のコメント:
コメントを投稿