演習課題「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());