[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