以前のブログで、(ここ)コンソールの入出力についてふれたので、それについて。
あとそれと、コンソール出力をファイルに出す方法についても。
コンソールの入出力は、普通、System.in,System.out,System.errで行います。
これは、
System.inが標準入力で、クラスはInputStream
System.outが標準出力で、クラスはPrintStream
System.errが標準エラー出力で、クラスはPrintStream
したがって、System.in.read()で、int型で、1文字ずつ取ってこれるし、
read(byte[] b) のバイト配列でとってくる方法もOKです。
System.out、System.errとも、PrintStreamなので、printメソッド、printlnメソッドは使えます。
で、ここまではOKです。
じゃ、標準出力を、ファイルに出したいときは??
System.setOut(PrintStream ps);みたいなかんじでやります。
setIn,SetErrもあります。
こんなかんじになります。
FileOutputStream fo33 = new FileOutputStream("out33.txt");
PrintStream ps33 = new PrintStream(fo33);
PrintStream oldps = System.out;
System.setOut(ps33);
oldpsとして、System.outを保存している理由は、あとで、標準出力をもどすからです。
こうすると、System.out.println("あいうえお");のように書き出すと、ファイルに出力されます。
■サンプルソースコード
●仕様
1.はじめに入力されたものを出力します
(改行が入力されるまで出力します)
2.エラー二出力します
3.標準入力の内容をout33.txtファイルに出力します
4.標準入力をもとにもどして、"ファイルに書き出したよ"と出力します。
●ソース
こんなかんじです。
import java.io.*; public class test { public static void main(String[] args) { // 書き出しデータ String data = "地学 平野麻樹子¥n日本史 小笠原亜里沙¥n美術 村井美樹"; int i; try { // 入力したものをそのままだす while((i = System.in.read()) != '¥n') { System.out.print((char)i); } // エラーに出力してみる System.err.print(data); //-------------------- //PrintWriterを使うケース //-------------------- FileOutputStream fo33 = new FileOutputStream("out33.txt"); PrintStream ps33 = new PrintStream(fo33); PrintStream oldps = System.out; System.setOut(ps33); // ファイル書き出し System.out.println("出力変換"); System.out.print(data); // 元に戻す System.setOut(oldps); System.out.println("ファイルに書き出したよ"); // クローズ ps33.close(); fo33.close(); } catch(Exception e) { e.printStackTrace(); } } } |
(上記 < > ¥は、本当は半角です)