#author("2017-07-11T22:35:19+09:00","","")
#author("2017-07-12T17:17:06+09:00","","")
#navi(../)
* テキストファイルの出力 [#k3131e76]
JavaのOutputStreamWriterを使ってテキストファイルの作成および出力を行います。~
FileWriterでもよいのですが、文字コードを指定するのでOutputStreamWriterを使ったサンプルソースを以下に記します。

#contents

*関連記事 [#b3e380b4]
-[[テキストファイルの読み込みサンプル>ファイル操作/テキストファイルの読み込み]]
//-[[テキストファイルの出力>ファイル操作/テキストファイルの出力]]
-[[ファイルを追記モード開き文字列を追加する>ファイル操作/ファイルを追記モード開き文字列を追加する]]
-[[CSV取込みサンプルを作ってみた>ファイル操作/CSV取込みサンプルを作ってみた]]

* テキストファイル作成および出力のサンプルコード [#nb2e2566]
本サンプルコードの動作ですが、ファイルが既に存在する場合は削除し再作成されます。

以下にサンプルソースを2つ紹介します。~

** サンプルプログラムの操作について [#o913cfe3]
キーボードから文字を入力し、入力した文字列をファイルに出力します。~
文字の入力を終了するには、.(dot)のみ入力してEnterキーを押してください。~
本サンプルプログラムが終了します。

** 紹介する2つのサンプルソース [#p4a41bbb]
-1つ目 &ref(WriteText1.java); UTF-8, LF~
1つ目は、FileOutputStream, OutputStreamWriterを使用してテキストをファイルに出力するサンプルソースです。~
OutputStreamWriterのwriteメソッドでは、自動的に改行を付与してくれないので、System.getProperty("line.separator")で、~
デフォルトの改行コードを付け、ファイルに出力しています。
#br
-2つ目 &ref(WriteText2.java); UTF-8, LF~
2つ目は、さらにPrintWriterを使用し、PrintWriterのprintlnメソッドによりファイルに出力しています。~
printlnなので、改行付きで出力されます。

* サンプルソース1 [#ta09b2a4]
&ref(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 [#pe883049]
&ref(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();
     }
 }

* 実行結果 [#i411d201]
上記のテキストファイル出力サンプルソースをコンパイルして実行してみます。

 $ 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でテキストファイルを出力するサンプルソースでした。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS