はじめに
皆さん。こんにちは!
DreamHanksの254cmです。
今回はファイルの入出力について説明していきます。
Java記事のまとめはこちらです。
前回の記事は【Java開発】第20回 Exceptionクラスです。
ファイルの入出力
今までは「System.out.println」や「Scanner」クラスを利用してコンソールに値を出力または入力を行いました。
ファイルを利用して同じような入力および出力を行うことができます。
ファイル入出力を扱うクラスはいろいろありますが、今回は代表的なクラスである
「BufferedReader」と「BufferedWriter」を紹介します。
ファイル入力
ファイル入力はファイルの内容を読み込んで使うことであり、「BufferedReader」クラスがよくつかわれます。
サンプル
Cドライブの下に上記のようなファイルを置きました。
このファイルをBufferedReaderクラスを利用して読み込みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class FileIOSample { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new FileReader("C:\\in.txt")); while(true) { String line = br.readLine(); if(line == null)break; System.out.println(line); } br.close(); } catch (IOException e) { e.printStackTrace(); } } } |
出力結果
上記のサンプルはBufferedReaderクラスを利用してファイルの内容を読み込んでいます。
BufferedReaderクラスを利用する際、指定された経路にファイルが存在されない場
合、FileNotFoundExceptionが発生されるのでtry/catchを利用して例外処理を
しなければなりません。
上記のサンプルではFileNotFoundExceptionではなくIOExceptionを利用して
例外処理を行いましたが、FileNotFoundExceptionはIOExceptionの子供クラスなので、構いません。
〇BufferedReaderクラスの主なメソッド
上記のメソッド以外にもいろんなメソッドがありますが、
よく使われるメソッドは上記のようになります。
BufferedReaderクラスの詳細はこちらのページで「ctrl+F」検索すると参考できます。
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public class FileIOSample { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new FileReader("C:\\in.txt")); if(br.ready()) { char character1 = (char)br.read(); System.out.println(character1); br.skip(3); char character2 = (char)br.read(); System.out.println(character2); String line = br.readLine(); System.out.println(line); } br.close(); } catch (IOException e) { e.printStackTrace(); } } } |
上記のサンプルは前のサンプルと同じファイルで行いました。
上記のサンプルを実行すると一つ目に「read()」メソッドが実行され、
現在位置の一文字を整数型で返還します。
整数型で返還されるので、文字を格納するために型キャストを行いました。
上記の画像は現在読み込みの状態を簡単に表したものです。
やじるしは現在に読み込んでいる値のインデクスです。
初めて「read()」が実行されるとき、BufferedReaderはインデクスの値を返還します。
次は「skip()」メソッドが実行され、引数で入力された数値だけ文字列をスキップします。
上記の画像のように3桁がスキップされます。
次に「read()」が実行され、ッが返還されます。
次は「readLine()」メソッドが実行され、インデクスの現在位置から1行が返還されます。
なので、line変数には「セージです。」が格納されます。
出力結果
1 2 3 |
テ ッ セージです。 |
ファイル出力
ファイル出力はファイルに内容を書き込むことであり、
「BufferedWriter」クラスがよく使われます。
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 |
public class FileIOSample { public static void main(String[] args) { try { BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\out.txt")); bw.write("入力です。"); bw.close(); } catch (IOException e) { e.printStackTrace(); } } } |
上記のサンプルはBufferedWriterクラスを利用してファイルに内容を書き込んでいます。
上記の処理は指定した経路にファイルが存在する場合、ファイルの内容をすべて消して内容を上書きします。
経路にファイルが存在しなかった場合、指定したファイル名でファイルを新しく生成して内容を書き込みます。
ファイルの内容を消しなく、続きを書き込みたい場合には
1 2 3 4 5 6 7 8 9 10 11 12 |
public class FileIOSample { public static void main(String[] args) { try { BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\out.txt",true)); bw.write("入力です。"); bw.close(); } catch (IOException e) { e.printStackTrace(); } } } |
上記のように作成するとOKです。
〇BufferedWriterの主なメソッド
上記のメソッド以外にもいろんなメソッドがありますが、
よく使われるメソッドは上記のようになります。
BufferedWriterクラスの詳細はこちらのページで「ctrl+F」検索すると参考できます。
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class FileIOSample { public static void main(String[] args) { try { BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\out.txt")); bw.write("入力です。"); bw.write("改行しませんでした。"); bw.newLine(); bw.write("改行しました。"); bw.write("これを使うとnewLineメソッドを使わなくても改行さ入れます。\n"); bw.write("改行されたことを確認できます。"); bw.close(); } catch (IOException e) { e.printStackTrace(); } } } |
出力結果
終わりに
今回の記事は以上になります。
次回はラッパークラスを学びましょう。
ご覧いただきありがとうございます。
コメント