###実現したいこと
ファイル出力処理で、出力先ディスク容量が足りない場合に、
標準入力にて再判定するかどうか尋ねるという処理を実装中ですが問題が発生しました。
以下のソースコードの19行目のString yn = scan.nextLine().trim();
で、標準入力のために処理が停止するはずが止まってくれません。
そのため、NoSuchElementExceptionが発生してしまいます。
なぜ止まらないのか原因がわからないため手詰まりとなっています。
解決策があれば教えて頂きたいです。よろしくお願いします。
###該当のソースコード
Java
1// 出力ファイルライターの設定 2PrintWriter writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter( 3 new FileOutputStream(outputFile), "Shift_JIS"))); 4 5// Scannerの生成 6Scanner scan = new Scanner(System.in); 7// 出力ログファイルサイズ 8long outputLogFileSize = 0L; 9// 書き込み処理ループ 10for (String outputLogLine : outputLogList) { 11 outputLogFileSize = outputLogFileSize + outputLogLine.getBytes("Shift_JIS").length; 12 spaceCheckLoop: while (true) { 13 // 出力可否判定 14 if (outputLogFileSize >= outputFolder.getUsableSpace()) { 15 16 stdInLoop: while (true) { 17 System.out.println("出力先ディスク空き容量が不足しているため出力できません。"); 18 System.out.println("再判定しますか?(yes/no)"); 19 String yn = scan.nextLine().trim(); 20 21 if (yn.equals("yes")) { 22 break stdInLoop; 23 } else if (yn.equals("no")) { 24 System.exit(1); 25 } else { 26 System.out.println("yesかnoを入力してください。"); 27 } 28 } 29 } else { 30 break spaceCheckLoop; 31 } 32 } 33 // ファイルへ書き込み 34 writer.println(outputLogLine); 35} 36// 標準入力のクローズ 37scan.close(); 38 39// 書き込みのクローズ 40writer.close();
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/26 09:23
2016/05/26 09:27
2016/05/26 09:28
2016/05/26 09:29