読者です 読者をやめる 読者になる 読者になる

人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習・Deep Learningに関する記事が多いです。



テキストファイル入出力

Javagame

テキストファイルからデータを読み込んだり、書き込んだりする基本的な方法です。ファイルに保存してあるイベントデータを読み込んだり、ゲームのスコアをファイルに記録したりする場合に使います。

サンプルは読み込みボタンを押すとtest.txtからデータを読み込んでテキストエリアに表示します。テキストエリアでテキストを修正して書き込みボタンを押すとtest.txtにデータを保存されます。

text_io.jar

テキストファイルの読み込み

テキストファイルがJARファイルの外にあるか中にあるかでファイル指定の方法が少し変わります。まずは、JARファイルの外にテキストファイルがある場合です。

    try {
        // test.txtからファイルを読み込んでテキストエリアに表示
        BufferedReader br = new BufferedReader(
            new FileReader("test.txt"));  // ファイルを開く
        String line;
        while ((line = br.readLine()) != null) {  // 1行ずつ読み込む
            // 読み込んだ1行をテキストエリアに表示
            textArea.append(line + "\n");
        }
        br.close();  // ファイルを閉じる
    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    }

このサイトでもそうですが、普通ゲームを配布するときはテキストデータ、画像データ、音楽データなどはJARファイル内にまとめて圧縮すると思います。JARファイル内にあるテキストデータからデータを読み込むときは下のようにします。

    BufferedReader br = new BufferedReader(
        new InputStreamReader(
            getClass().getResourceAsStream("test.txt")));

テキストファイルの書き込み

JARファイル外のテキストファイルにデータを書き込む方法です。たぶん、JARファイル内のファイルに書き込む方法はないと思われます。

    try {
        // test.txtにテキストエリアの内容を書き込む
        BufferedWriter bw = new BufferedWriter(
            new FileWriter("test.txt"));  // ファイルを開く
        bw.write(textArea.getText());
        bw.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }