Javaのバイナリファイルファイルの読み込みと書き込みのサンプルです。(確認環境:Java 8)
FileInputStreamとFileOutputStreamを使用します。
目次
バイナリファイル | バイナリファイルファイルの読み込みと書き込み |
使用しているコンストラクタ |
バイナリファイルファイルの読み込みと書き込み
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 = "D:\\Test1";
String file1 = "\\test1.png";
String file2 = "\\test2.png";
try(
FileInputStream fis = new FileInputStream(dir + file1);
BufferedInputStream reader = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream(dir + file2);
BufferedOutputStream writer = new BufferedOutputStream(fos);
){
int data;
while ((data = reader.read()) != -1) {
writer.write(data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
16~20行目は、try-with-resources構文です。リソースを自動でクローズします。
16,19行目のFileInputStreamクラスとFileOutputStreamクラスは、バイトで読み書きします。
17,20行目のBufferedInputStreamクラスとBufferedOutputStreamクラスは、バッファ処理を行います。
23行目のreadメソッドの戻り値は、intを返します。バイトデータ(0~255)です。ファイルの終わりに達した場合、-1を返します。
使用しているコンストラクタ
FileInputStreamクラス
public FileInputStream(String name) throws FileNotFoundException |
public FileInputStream(File file) throws FileNotFoundException |
- ファイルへの接続を開き、FileInputStreamを作成します。
- 引数は、入力するパスとファイル名を指定します。ファイルオブジェクトも可能です。
- 以下はOracleのFileInputStreamクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/FileInputStream.html
FileOutputStreamクラス
public FileOutputStream(String name) throws FileNotFoundException |
public FileOutputStream(File file) throws FileNotFoundException |
- データを書き込むための出力ストリームです。
- 引数は、出力するパスとファイル名を指定します。ファイルオブジェクトも可能です。
- 以下はOracleのFileOutputStreamクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/FileOutputStream.html
BufferedInputStreamクラス
public BufferedInputStream(InputStream in) |
- バッファを利用してファイルを読み込むのでディスクアクセスが減り処理効率がよくなります。
- 以下はOracleのBufferedInputStreamクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/BufferedInputStream.html
BufferedOutputStreamクラス
public BufferedOutputStream(OutputStream out) |
- バッファを利用してファイルに書き込むのでディスクアクセスが減り処理効率がよくなります。
- 以下はOracleのBufferedOutputStreamクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/BufferedOutputStream.html
関連の記事
Java バッファを利用したファイルの読み込みと書き込み(BufferedReaderとBufferedWriter)
Java 文字コード+ファイルの読み書き(InputStreamReader)