Javaのバイナリファイルファイルの読み込みと書き込みのサンプルです。
FileInputStreamクラスとFileOutputStreamクラスを使用します。
| 確認環境 ・Java 8 |
目次
FileInputStreamクラス
- バイトで読み込みます。画像などのバイナリファイルに使用します。
- 以下はJava8 API仕様のFileInputStreamクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/FileInputStream.html
FileOutputStreamクラス
- バイトで書き込みます。画像などのバイナリファイルに使用します。
- 以下はJava8 API仕様のFileOutputStreamクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/FileOutputStream.html
サンプルコード
pngファイルを読み込み、そのまま別ファイルに出力しています。
package test1;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test1 {
public static void main(String[] args) {
String dir = "E:\\workspace123abc";
String filename1 = "\\test1.png";
String filename2 = "\\test2.png";
try(
FileInputStream fi = new FileInputStream(dir + filename1);
BufferedInputStream reader = new BufferedInputStream(fi);
FileOutputStream fo = new FileOutputStream(dir + filename2);
BufferedOutputStream writer = new BufferedOutputStream(fo);
){
int data;
while ((data = reader.read()) != -1) {
writer.write(data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
16~20行目は、try-with-resources構文です。リソースを自動でクローズします。
17,20行目のBufferedInputStreamクラスとBufferedOutputStreamクラスは、バッファ処理を行います。
23行目のreadメソッドの戻り値は、intを返します。バイトデータ(0-255)です。ファイルの終わりに達した場合、-1を返します。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/BufferedInputStream.html
https://docs.oracle.com/javase/jp/8/docs/api/java/io/BufferedOutputStream.html
関連の記事
Java テキストファイルの読み書きのサンプル(Filesクラス)
Java バッファを利用したファイルの読み込みと書き込み(BufferedReaderとBufferedWriter)
Java ファイルの読み込みと書き込み(文字コードを指定するクラス)
Java フォルダ内のファイルの一覧を取得するサンプル(Fileクラス)
Java ドライブの容量と空き容量を取得するサンプル(Fileクラス)