金子邦彦研究室プログラミングJava のプログラム例テキストファイル入出力(Java を使用)

テキストファイル入出力(Java を使用)

【サイト内の Java 関連の資料】

標準入力から1行単位での読み込み(BufferedReader の readLine() メソッドを利用)

要点

標準入力から1行単位での読み込むと,そのまま標準出力に書き出す.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    /* 標準入力から1行単位での読み込むと,そのまま標準出力に書き出す. */
    private static String welcome = "入力してください:";
    private static String prompt = "> ";
    
    public static void main(String[] args) {
        try{
            String line;
            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("入力してください:");
            System.out.print(prompt);
            while( (line=buf.readLine()) != null ) {
                System.out.println(line);
                System.out.print(prompt);
            }
        }    
        catch(IOException e) {
            e.printStackTrace();
            System.exit(1);
        }
    }
}

【Windows での実行】

Windows で,ファイル Main.java を編集し実行するために,次のコマンドを, コマンドプロンプトで実行する.

cd %LOCALAPPDATA%
notepad Main.java
javac -encoding UTF-8 Main.java
java Main

[image]

テキストファイルから1行単位での読み込み,書き出し(FileInputStream, FileOutputStream を利用)

【キーワード】 ファイルオープン,テキストファイルの読み込みと書き出し,日本語文字コード,行単位での読み込みと書き出し

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
    private static String inFileName = "c:\\in.txt";
    private static String outFileName = "out.txt";
    /* Shift_JIS, ISP-2022-JP, EUC-JP Windows-31J */
    /* 出力時に JISAutoDetect の指定は不可 */
    private static String outFileCoding = "Shift_JIS";
    
    /* テキストファイルの読み出しと書き込みのサンプルプログラム */
    /* (注)バイナリファイルのときは,DataInputStream, DataOutputStream */
    public static void main(String[] args) {
        try{
            String line;
            BufferedReader buf =
                new BufferedReader( new InputStreamReader( new FileInputStream( inFileName ), "JISAutoDetect" ) );
            /* ファイルが存在しない場合には新たに作成.存在する場合には上書き */
            BufferedWriter outFile =
                                new BufferedWriter( new OutputStreamWriter( new FileOutputStream( outFileName ), outFileCoding ) );
            while( (line=buf.readLine()) != null ) {
                outFile.write(line);
                outFile.newLine();
                System.out.println(line);
            }
            buf.close();
            outFile.flush();
            outFile.close();
        }    
        catch(IOException e) {
            e.printStackTrace();
            System.exit(1);
        }
    }
}

【Windows での実行】

Windows で,ファイル Main.java を編集し実行するために,次のコマンドを, コマンドプロンプトで実行する.

cd %LOCALAPPDATA%
notepad Main.java
javac -encoding UTF-8 Main.java
powershell -command start-process notepad.exe "c:\\in.txt" -verb runas
java Main
type out.txt

[image]