[Java]FileInputStreamとFileOutputStreamでバイナリファイルを読み書きにする

2021年8月23日

書式
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

Java

Posted by arkgame