ファイルが存在するか確認してファイルが存在したら上書きするようなプログラムを作りたいです。
OKが入力されたときに上書きできるようにしたいのですが、入力したところでプログラムが終了してしまいます。上書きはfinishが入力されるまで繰り返したいです。
java
1import java.io.File; 2import java.io.FileWriter; 3import java.io.IOException; 4 5public class Main { 6 public static void main(String[] args) throws IOException { 7 System.out.println(); 8 String fileName = new java.util.Scanner(System.in).nextLine(); 9 File file = new File(fileName); 10 11 String message = ""; 12 13 FileWriter filewriter = new FileWriter(file); 14 if (file.exists()) { 15 System.out.println("上書き : ok"); 16 System.out.println("終了 : その他"); 17 String passKey = new java.util.Scanner(System.in).nextLine(); 18 System.out.println(); 19 if (passKey.equalsIgnoreCase("w")) { 20 try { 21 while (!(message.equals("finish"))) { 22 System.out.print("Input String "); 23 message += new java.util.Scanner(System.in).nextLine(); 24 filewriter.write(message); 25 26 } 27 filewriter.close(); 28 } catch (IOException e) { 29 System.out.println(e); 30 31 } 32 } else { 33 34 } 35 36 } else { 37 file.createNewFile(); 38 try { 39 while (!(message.equals("finish"))) { 40 message = new java.util.Scanner(System.in).nextLine(); 41 System.out.print("Input String"); 42 filewriter.write(message); 43 44 } 45 filewriter.close(); 46 } catch (IOException e) { 47 System.out.println(e); 48 } 49 50 } 51 52 } 53}
while()の繰り返し条件を再確認してください。
また、ファイルコピーやファイル内容表示などのサンプルを見つけて、ファイル操作の定石を把握してください。
String同士の比較(==や!=)の意味をご確認ください。今度は、無限ループになっています。
また、新規のときのみ、例外を補足しているのは、どのような意図でしょうか?
なお、標準入力に対するScannerを複数発生させるのは、動作が不安定になりやすいので、最初に作成してものを、以後も利用するようにしたほうが良いです。
ご指摘ありがとうございます
Stringの比較について理解が不足していました
無限ループになってしまったのはどうしてでしょうか
>無限ループになってしまったのはどうしてでしょうか
”String同士の比較(==や!=)の意味をご確認ください。"
コードを書いたら、どういう動きになるのか、1行ずつ考えながら確認していってください。
現状では、「コードが書けた」で終わっていて、最低限の見直しすらしていないのが、よくわかる状態です。
どこから"w"が出てきたんですか?
kuuoteさんの回答は、もう忘れてしまっているんですか?
回答1件
あなたの回答
tips
プレビュー