[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を作成します。

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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));
}
}
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)); } }
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