このエントリーをはてなブックマークに追加


テキストファイルの出力

JavaのOutputStreamWriterを使ってテキストファイルの作成および出力を行います。
FileWriterでもよいのですが、文字コードを指定するのでOutputStreamWriterを使ったサンプルソースを以下に記します。

関連記事

テキストファイル作成および出力のサンプルコード

本サンプルコードの動作ですが、ファイルが既に存在する場合は削除し再作成されます。

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

サンプルプログラムの操作について

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

紹介する2つのサンプルソース

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

サンプルソース1

fileWriteText1.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

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


添付ファイル: fileWriteText2.java 31件 [詳細] fileWriteText1.java 31件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-07-12 (水) 17:17:06 (521d)