[Java]FileInputStreamとFileOutputStreamでバイナリファイルを読み書きにする
書式
1.public InputStreamReader(InputStream in,String charsetName) throws UnsupportedEncodingException
指定された文字セットを使うInputStreamReaderを作成します。
2.public OutputStreamWriter(OutputStream out,String charsetName) throws UnsupportedEncodingException
指定された文字セットを使うOutputStreamWriterを作成します。
使用例
package com.arkgame.info;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class StreamTransDemo {
      private static String fisName = "C:/data/study/test01.txt";
      private static String fosName = "C:/data/study/test02.txt";
      private static String charSet ="UTF-8";
      
      public static void main(String[] args) throws IOException {
            Path p1 = Paths.get(fisName);
            System.out.println("ファイル1のサイズ: " + Files.size(p1));
            /*ファイル1のバイトデータをファイル2に書き込む*/
            try (InputStreamReader isr = new InputStreamReader(
                        new FileInputStream(fisName),charSet);
                        OutputStreamWriter osw = new OutputStreamWriter(
                        new FileOutputStream(fosName),charSet)) {
                  int cnt;
                  /* 入力ストリームからバイト配列に読み込む */
                  while ((cnt = isr.read()) != -1) {
                        /* バイト配列の内容を出力ストリームに書き出す */
                        osw.write((byte) cnt);
                  }
            }
            
            Path p2 = Paths.get(fosName);
            System.out.println("ファイル2のサイズ: " + Files.size(p2));
      }
}
結果
ファイル1のサイズ: 31
ファイル2のサイズ: 31