2009年6月10日水曜日

Java バイナリファイルから1バイトづつ読み込み、1バイトづつ書き込みます。

バイナリファイルから1バイトづつ読み込むには
FilreInputStreamクラスのreadメソッドを使用します。
readメソッドはファイルの最後に達すると-1を返します。

int read()
入力ストリームから 1 バイトを読み込みます。
int read(byte[] b)
入力ストリームから最大 b.length バイトをバイト配列に読み込みます。
int read(byte[] b, int off, int len)
入力ストリームからバイト配列へ最大 len バイトのデータを読み込みます。



1バイトづつバイナリファイルへ書き込むにはFileOutputStreamクラスのwriteメソッド使用します。

void write(int b)
指定されたバイトデータをファイル出力ストリームに書き込みます。
void write(byte[] b)
指定されたバイト配列の b.length バイトをこのファイル出力ストリームに書き込みます。
void write(byte[] b, int off, int len)
指定されたバイト配列からのオフセット位置 off から始まる len バイトをこのファイル出力ストリームに書き込みます。


参考:テキストファイルの場合とほとんど同じです。
テキストファイルから1文字づつ文字を読み込む
テキストファイルに文字を書き込む

下記のコードは「D:/Sample1.jpg」より1バイト読み込み、「D:/CopySample1.jpg」に1バイト書き込みます。
package FileAccess;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;


public class BinaryFileSample01{

public static void main(String args[]){
new BinaryFileSample01();
}

public BinaryFileSample01(){
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("D:/Sample1.jpg");
fos = new FileOutputStream("D:/CopySample1.jpg");
int data;
while ((data = fis.read()) != -1){
fos.write(data);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{

try {
if (fis != null){
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}

try {
if (fos != null){
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}

}

}
}

0 件のコメント: