テキストファイルの出力 †JavaのOutputStreamWriterを使ってテキストファイルの作成および出力を行います。 関連記事 †テキストファイル作成および出力のサンプルコード †本サンプルコードの動作ですが、ファイルが既に存在する場合は削除し再作成されます。 以下にサンプルソースを2つ紹介します。 サンプルプログラムの操作について †キーボードから文字を入力し、入力した文字列をファイルに出力します。 紹介する2つのサンプルソース †
サンプルソース1 †WriteText1.java UTF-8, LF import java.lang.Exception; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.InputStreamReader; import java.io.BufferedReader; class WriteText1 { String filename; private void setFilename(String s) { this.filename = s; } private String getFilename() { return this.filename; } private void usage() { System.err.println("Usage: java WriteText <output filename>"); System.exit(1); } WriteText1(String[] args) { if (args.length != 1) { usage(); } this.setFilename(args[0]); } private boolean inputLine(OutputStreamWriter osw) { boolean ret = true; try { System.out.print("> "); // prompt InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String in = br.readLine(); if (in.equals(".")) { ret = false; } // input terminator else { osw.write(in + System.getProperty("line.separator")); } // output input string // br.close(); // stdinなので閉じる必要なし・閉じれない(閉じると例外発生) // isr.close(); // stdinなので閉じる必要なし・閉じれない(閉じると例外発生) } catch (Exception e) { e.printStackTrace(); System.exit(2); } return ret; } private void run() { String charcode = System.getProperty("file.encoding"); // default character code try { FileOutputStream fos = new FileOutputStream(this.getFilename()); OutputStreamWriter osw = new OutputStreamWriter(fos, charcode); while (inputLine(osw)); osw.close(); fos.close(); } catch (Exception e) { e.printStackTrace(); System.exit(3); } } public static void main(String[] args) { WriteText1 me = new WriteText1(args); me.run(); } } サンプルソース2 †WriteText2.java UTF-8, LF import java.lang.Exception; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.PrintWriter; class WriteText2 { String filename; private void setFilename(String s) { this.filename = s; } private String getFilename() { return this.filename; } private void usage() { System.err.println("Usage: java WriteText <output filename>"); System.exit(1); } WriteText2(String[] args) { if (args.length != 1) { usage(); } this.setFilename(args[0]); } private boolean inputLine(PrintWriter pw) { boolean ret = true; try { System.out.print("> "); // prompt InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String in = br.readLine(); if (in.equals(".")) { ret = false; } // input terminator else { pw.println(in); } // br.close(); // stdinなので閉じる必要なし・閉じれない(閉じると例外発生) // isr.close(); // stdinなので閉じる必要なし・閉じれない(閉じると例外発生) } catch (Exception e) { e.printStackTrace(); System.exit(2); } return ret; } private void run() { String charcode = System.getProperty("file.encoding"); // default character code try { FileOutputStream fos = new FileOutputStream(this.getFilename()); OutputStreamWriter osw = new OutputStreamWriter(fos, charcode); PrintWriter pw = new PrintWriter(osw); while (inputLine(pw)); pw.close(); osw.close(); fos.close(); } catch (Exception e) { e.printStackTrace(); System.exit(3); } } public static void main(String[] args) { WriteText2 me = new WriteText2(args); me.run(); } } 実行結果 †上記のテキストファイル出力サンプルソースをコンパイルして実行してみます。 $ javac WriteText?.java $ java WriteText1 out1.txt > あいうえお > aiueo > . $ cat out1.txt あいうえお aiueo $ java WriteText2 out2.txt > kakikukeko > かきくけこ > . $ cat out2.txt kakikukeko かきくけこ $ ls out*.txt out1.txt out2.txt 以上、Javaでテキストファイルを出力するサンプルソースでした。 |