2013-07-08 3 views
0

Я пытаюсь записать вывод java-консоли в файл .txt на моем рабочем столе. Но когда этот метод запускается, у меня есть вывод на консоль, и файл txt создается, но он пуст, и я понял, что BufferedReader (in) не работает ... (Из-за инструкции «ok1-i»)Записать вывод консоли в файл .txt

Вопрос: ПОЧЕМУ ??? или ЧТО НЕПРАВИЛЬНО С МОЕМ КОДОМ? Это мой код, так что вы можете увидеть и запустить его

package noobxd; 

    import java.io.BufferedReader; 
    import java.io.BufferedWriter; 
    import java.io.FileWriter; 
    import java.io.IOException; 
    import java.io.InputStreamReader; 
    import java.util.Random; 

    public class Main { 

public static void main(String[] args) throws IOException { 
    String path = "C:\\Users\\Mario\\Desktop\\output.txt"; 

    generate_codes(); 

    writetxt(path); 
} 

private static void writetxt(String path) throws IOException { 
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 

    BufferedWriter out = new BufferedWriter(new FileWriter(path)); 
    try { 
     String inputLine; 
     inputLine = ""; 
     int i=0; 
     System.out.println("Starting"); 
     while (!inputLine.isEmpty()){ 
      System.out.println("ok1"+i); 
      inputLine = in.readLine(); 
      System.out.println("ok2"+i); 
      out.write(inputLine); 
      System.out.println("ok3"+i); 
      out.newLine(); 
      System.out.println("ok4"+i); 
      i++; 
     } 
     System.out.print("Write Successful"); 
    } catch (IOException e1) { 
     System.out.println("Error during reading/writing"); 
    } finally { 
     out.close(); 
     in.close(); 
    } 
} 

private static void generate_codes() { 
    Random rnd = new Random(); 
    for (int i = 0; i < 30; i++) { 
     int code = rnd.nextInt(201) + 100; 
     int students = rnd.nextInt(31) + 40; 
     int j = rnd.nextInt(4); 
     String type = new String(); 
     switch (j) { 
      case 0: 
       type = "Theory"; 
       break; 
      case 1: 
       type = "Lab"; 
       break; 
      case 2: 
       type = "Practice"; 
       break; 
      case 3: 
       type = "Exam"; 
       break; 
     } 
     System.out.println("TEL" + code + "-TopicNumber" + i + "-" + students + "-" + type); 

    } 
} 
} 

Спасибо за ваше время, пожалуйста, помогите мне решить мою проблему.

+1

+1 для имени пакета noobxd;) –

+0

@UncleIroh Хаха лол, что это потому, что это «дополнительное приложение», чтобы помочь мне экспортировать текстовый файл, чтобы использовать в моей Java-SQL на основе приложение (основной, который может импортировать txt-файл), так что это просто в консоли, тогда я назвал его noobxd – Mgustavoxd1

ответ

2
String inputLine; 
inputLine = ""; 
... 
while (!inputLine.isEmpty()) // this is false and so the loop is not executed 

В будущем, пожалуйста, научитесь использовать инструменты отладки и просто прочитайте свой код более тщательно. Если вы пытаетесь, чтобы читать до конца файла, используйте

while ((inputLine = in.readLine()) != null) { 
    ... 
} 
+0

ну, но если я установил его в '(while (inputLine.isEmpty())), то вывод будет . .. 'TEL221-TopicNumber27-55-Lab' ' TEL280-TopicNumber28-58-Practice' 'TEL174-TopicNumber29-51-Lab' ' 'Starting' ok10' – Mgustavoxd1

+0

@ user2161991 Ok? Я не знаю, что это должно быть ... – Zong

+0

он должен быть как «флаг», который показывает мне, если метод был выполнен правильно, поэтому с этим выходом (просто ok1 0) (сначала ok, когда строка i = 0 (первая строка)) Я знаю, что я вошел в оператор while, но метод 'inputLine = in.readLine()' не выполнялся – Mgustavoxd1

0

Если вы хотите сохранить цикл до тех пор, пока пользователь не введет пустую строку в консоли, вы, вероятно, хотите что-то вроде

while (true) { 
     System.out.println("ok1"+i); 
     inputLine = in.readLine(); 
     if (inputLine.isEmpty()) 
      break; 
     // the rest of your loop 
} 
0

Вы вероятно, должны сделать что-то вроде этого:

inputLine = in.readLine(); 
while (inputLine != null && !inputLine.isEmpty()){ 
    System.out.println("ok1"+i); 
    System.out.println("ok2"+i); 
    out.write(inputLine); 
    System.out.println("ok3"+i); 
    out.newLine(); 
    System.out.println("ok4"+i); 
    i++; 
    inputLine = in.readLine(); 
} 
+0

Я сделал то, что вы сказали, но все равно 'inputLine = in.readLine();' не выполняется, я не знаю, почему – Mgustavoxd1

 Смежные вопросы

  • Нет связанных вопросов^_^