前提・実現したいこと
参考書を使って独学で勉強中です。
初歩的な質問です。
テキストファイルを1行づつ読み込み、ArrayListに格納した後で、順に取り出し再度別のテキストファイルに書き出すと言う練習問題です。
書き方にまとまりがなく見にくいコードかもしれませんがお答えいただきたいです。
発生している問題・エラーメッセージ
同じパッケージ内に book.txtというファイルは作成済みなのですが以下ようなエラーが発生してしまいます。
java.io.FileNotFoundException: book.txt (No such file or directory) at java.base/java.io.FileInputStream.open0(Native Method) at java.base/java.io.FileInputStream.open(FileInputStream.java:211) at java.base/java.io.FileInputStream.<init>(FileInputStream.java:153) at java.base/java.io.FileInputStream.<init>(FileInputStream.java:108) at java.base/java.io.FileReader.<init>(FileReader.java:60) at pass2.Exec2.main(Exec2.java:18) タイトル数=0
該当のソースコード
Java
1package pass2; 2 3import java.io.BufferedReader; 4import java.io.BufferedWriter; 5import java.io.FileReader; 6import java.io.FileWriter; 7import java.io.IOException; 8import java.io.PrintWriter; 9import java.util.ArrayList; 10import java.util.Collections; 11 12public class Exec2 { 13 14 public static void main(String[] args) { 15 ArrayList<String> ls = new ArrayList<String>(); 16 try { 17 BufferedReader in = 18 new BufferedReader(new FileReader("book.txt")); 19 String s; 20 while((s=in.readLine())!=null) { 21 ls.add(s); 22 } 23 in.close(); 24 }catch(IOException e) { 25 e.printStackTrace(); 26 } 27 Collections.sort(ls); 28 try { 29 PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("sortedBook.txt"))); 30 for(int i=0;i<ls.size();i++) { 31 out.println(ls.get(i)); 32 } 33 out.close(); 34 35 }catch(IOException e) { 36 e.printStackTrace(); 37 } 38 System.out.println("タイトル数="+ls.size()); 39 40 } 41 42} 43
試したこと
参考書の答えも参照し、見比べていますがミスが見当たらず、解決策がわかりません。
お力添えいただけると幸いです。
補足情報(FW/ツールのバージョンなど)
Eclips(2021-09),JavaSE-16