演習課題「FileWriterクラス を使用してみよう」
現在、FileWriterクラスのコンストラクタを使い、/home/ubuntu/java-file/files/out.txtに、六村リオという文字列を書き込もうとしています。/home/ubuntu/java-file/source/jp.paiza.file/jp/paiza/file/Test.javaにおいて、文字列を書き込むよう、FileWriterクラスのコンストラクタのうち、引数にFileクラスのインスタンスをとるものを使用してコードを修正してください。また、文字列を書き込むには、writeメソッドを使用します。修正後、コンパイルと実行を行い結果を確認してください。
なお、コンパイルコマンドについて理解できていれば、以下のコンパイルコマンドをコピーして利用してください。
$ javac -d classes/jp.paiza.file -p classes source/jp.paiza.file/module-info.java source/jp.paiza.file/jp/paiza/file/*.java
また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
$ java -p classes --module jp.paiza.file/jp.paiza.file.Test
演習課題「FileWriterクラス を使用してみよう - その2」
現在、FileWriterクラスのコンストラクタを使い、/home/ubuntu/java-file/files/out.txtに、六村リオという文字列を複数個書き込もうとしています。しかし、現在のコードでは、ファイルが上書きされてしまい 1つ しか書き込みが行えません。/home/ubuntu/java-file/source/jp.paiza.file/jp/paiza/file/Test.javaにおいて、ファイルの最後に文字列を書き込むよう、FileWriterクラスのコンストラクタで、2つ目 の引数を指定してコードを修正してください。修正後、コンパイルと実行を行い結果を確認してください。
なお、コンパイルコマンドについて理解できていれば、以下のコンパイルコマンドをコピーして利用してください。
$ javac -d classes/jp.paiza.file -p classes source/jp.paiza.file/module-info.java source/jp.paiza.file/jp/paiza/file/*.java
また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
$ java -p classes --module jp.paiza.file/jp.paiza.file.Test
演習課題「FileReaderクラス を使用してみよう」
現在、FileReaderクラスのコンストラクタを使い、/home/ubuntu/java-file/files/out.txtに記述されている緑川つばめという文字列を読み込んで、出力しようとしています。/home/ubuntu/java-file/source/jp.paiza.file/jp/paiza/file/Test.javaにおいて、文字列を読み込むよう、FileReaderクラスのコンストラクタのうち、引数にFileクラスのインスタンスをとるものを使用して、読み込んだ文字列が出力されるようコードを修正してください。
加えて、readメソッドによる 1文字 ごとの値の受け取りを指定するよう while文 に追記してください。その際、繰り返しの終了条件として、ストリームの終わりに達した際に与えられる戻り値である -1 を指定するよう修正してください。
修正後、コンパイルと実行を行い結果を確認してください。
なお、コンパイルコマンドについて理解できていれば、以下のコンパイルコマンドをコピーして利用してください。
$ javac -d classes/jp.paiza.file -p classes source/jp.paiza.file/module-info.java source/jp.paiza.file/jp/paiza/file/*.java
また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
$ java -p classes --module jp.paiza.file/jp.paiza.file.Test
期待する出力値
Test
緑
川
つ
ば
め
演習課題「BufferedWriterクラス を使用してみよう」
現在、BufferedWriterクラスのコンストラクタを使い、/home/ubuntu/java-file/files/out.txtに追加で猫先生という文字列を書き込もうとしています。しかし、現在のコードではコンパイル時にエラーが発生してしまいます。/home/ubuntu/java-file/source/jp.paiza.file/jp/paiza/file/Test.javaにおいて、BufferedWriterクラスのコンストラクタを使いながら、ファイルの最後に文字列を書き込むよう、コードを修正してください。修正後、コンパイルと実行を行い結果を確認してください。
なお、コンパイルコマンドについて理解できていれば、以下のコンパイルコマンドをコピーして利用してください。
$ javac -d classes/jp.paiza.file -p classes source/jp.paiza.file/module-info.java source/jp.paiza.file/jp/paiza/file/*.java
また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
$ java -p classes --module jp.paiza.file/jp.paiza.file.Test
演習課題「PrintWriterクラス を使用してみよう」
現在、PrintWriterクラスのコンストラクタを使い、/home/ubuntu/java-file/files/out.txtに奈良翔太と雑賀真斗の二人とプログラミングを勉強しようという長めの文字列を、行末に行末記号を含めて書き込もうとしています。しかし、現在のコードではコンパイル時にエラーが発生してしまいます。/home/ubuntu/java-file/source/jp.paiza.file/jp/paiza/file/Test.javaにおいて、PrintWriterクラスのコンストラクタを使いながら、ファイルに文字列を書き込むよう、コードを修正してください。修正後、コンパイルと実行を行い結果を確認してください。
なお、コンパイルコマンドについて理解できていれば、以下のコンパイルコマンドをコピーして利用してください。
$ javac -d classes/jp.paiza.file -p classes source/jp.paiza.file/module-info.java source/jp.paiza.file/jp/paiza/file/*.java
また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
$ java -p classes --module jp.paiza.file/jp.paiza.file.Test
演習課題「BufferedReaderクラス を使用してみよう」
現在、BufferedReaderクラスのコンストラクタを使い、/home/ubuntu/java-file/files/out.txtに記述されている奈良翔太と雑賀真斗の二人とプログラミングを勉強しようという文字列を読み込んで、一行のまとまりのまま出力しようとしています。しかし、現在のコードではコンパイル時にエラーが発生してしまいます。/home/ubuntu/java-file/source/jp.paiza.file/jp/paiza/file/Test.javaにおいて、BufferedReaderクラスのコンストラクタを使いながら、文字列を読み込むよう、BufferedReaderクラスのコンストラクタのうち、引数にFileReaderクラスのインスタンスをとるものを使用して、読み込んだ文字列が出力されるようコードを修正してください。
加えて、繰り返しの終了条件として、ストリームの終わりに達した際に与えられる戻り値である null を指定するよう修正してください。
修正後、コンパイルと実行を行い結果を確認してください。
なお、コンパイルコマンドについて理解できていれば、以下のコンパイルコマンドをコピーして利用してください。
$ javac -d classes/jp.paiza.file -p classes source/jp.paiza.file/module-info.java source/jp.paiza.file/jp/paiza/file/*.java
また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
$ java -p classes --module jp.paiza.file/jp.paiza.file.Test
期待する出力値
Test
奈良翔太と雑賀真斗の二人とプログラミングを勉強しよう
#04:キャラクタストリーム
このチャプターでは、キャラクタストリームについて学習します。
クラスReader
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/io/Reader.html
クラスWriter
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/io/Writer.html
クラスFileReader
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/io/FileReader.html
クラスFileWriter
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/io/FileWriter.html
クラスBufferedReader
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/io/BufferedReader.html
クラスBufferedWriter
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/io/BufferedWriter.html
コンパイルjavac -d classes/jp.paiza.file -p classes source/jp.paiza.file/module-info.java source/jp.paiza.file/jp/paiza/file/*.java
実行java -p classes --module jp.paiza.file/jp.paiza.file.A
Java7以降で利用できるtry-with-resourcesを使うと、Closeable及びAutoCloseableインターフェースを実装しているリソースのクローズ処理をfinallyブロックを用いずに確実に行うことができます。// try-with-resources
try (Statement stmt = connection.createStatement()) {
    // 処理
} catch (SQLException e) {
    // 例外時の処理
}
File f = new File("/home/ubuntu/java-file/files", "out.txt");
try (PrintWriter w =
        new PrintWriter(
            new BufferedWriter(
                new FileWriter(f, true)))) {
    w.println("霧島京子");
} catch (IOException e) {
    e.printStackTrace();
}
try (BufferedReader r = new BufferedReader(new FileReader(f))) {
    String line = null;
    while ((line = r.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}
FilesクラスのnewBufferedWriterメソッドを使用して次のように記述することも可能です。File f = new File("out.txt");
// デフォルト設定の場合
BufferedWriter w = Files.newBufferedWriter(f.toPath());
FilesクラスのnewBufferedReaderメソッドを使用して次のように記述することも可能です。File f = new File("out.txt");
// デフォルト設定の場合
BufferedReader r = Files.newBufferedReader(f.toPath());