Javaでテキストファイルを読み込む方法です。TextReadSample.javaというファイル名で以下の内容で保存してコンパイルして実行するとこのソースコードの内容がそのまま表示されると思います。昔ながらのreadLineで1行ずつ読み込んで標準出力に結果を表示するサンプルです。通常のtry catchだとclose処理がありますが、Java 7より登場したtry-with-resources文を使うことでclose処理が楽になります。try-with-resources文に関してはJavaの try-with-resources文の紹介 #入門 – Qiitaが参考になるかと思います。
import java.nio.file.Files; import java.nio.file.Paths; import java.nio.charset.StandardCharsets; import java.io.IOException; public class TextReadSample{ public static void main(String... args){ var path = Paths.get("TextReadSample.java"); try(var reader = Files.newBufferedReader(path, StandardCharsets.UTF_8)){ String line; while((line = reader.readLine()) != null){ System.out.println(line); } }catch(IOException e){ System.out.println("ファイルの読み込みに失敗しました。"); e.printStackTrace(); } } }
BufferedReaderにはlinesというメソッドがありJava 8で登場したJava Stream APIを使うこともできます。
import java.nio.file.Files; import java.nio.file.Paths; import java.nio.charset.StandardCharsets; import java.io.IOException; public class TextReadSample{ public static void main(String... args){ var path = Paths.get("TextReadSample.java"); try(var reader = Files.newBufferedReader(path, StandardCharsets.UTF_8)){ reader.lines().forEach(System.out::println); }catch(IOException e){ System.out.println("ファイルの読み込みに失敗しました。"); e.printStackTrace(); } } }
試しに行の先頭がimportの箇所だけ出力するようにしてみましょう。filterメソッドとstartsWithを使えば簡単にできます。filterなどのJava Stream APIの使い方に関してはJava Stream APIをいまさら入門 #java8 – Qiitaが参考になるかと思います。
import java.nio.file.Files; import java.nio.file.Paths; import java.nio.charset.StandardCharsets; import java.io.IOException; public class TextReadSample{ public static void main(String... args){ var path = Paths.get("TextReadSample.java"); try(var reader = Files.newBufferedReader(path, StandardCharsets.UTF_8)){ reader.lines().filter(s -> s.startsWith("import")).forEach(System.out::println); }catch(IOException e){ System.out.println("ファイルの読み込みに失敗しました。"); e.printStackTrace(); } } }
ちなみにFilesクラスにはreadAllLinesというメソッドがありBufferedReaderに触れずにファイル読み込みもできます。ここでは紹介しないので自分で調べてみましょう!