2015-04-09 2 views
2

У меня есть весь мой код в java-настройке, но как бы скопировать вывод консоли и перейти в файл output.txt? У меня есть этот код на вершине:Как создать выходной файл в java?

Scanner console = new Scanner(System.in); 
    System.out.print("Enter Input file name: "); 
    String inputFileName = console.next(); 
    System.out.print("Output file: "); 
    String outputFileName = console.next(); 
    File inputFile = new File(inputFileName); 
    Scanner in = new Scanner(inputFile); 
    PrintWriter out = new PrintWriter(outputFileName); 

Это побуждает меня ввести входной файл (input.txt) и выходной файл (output.txt). Когда я ввожу всю свою информацию, он создает выходной файл, но в нем ничего не написано. Мне нужно, какие выходы консоли будут записаны в файл.

+0

возможно дубликат [Могу ли я дублировать или перехватить выходной поток в Java?] (http://stackoverflow.com/questions/11673697/could-i-duplicate-or-intercept-an-output-stream-in-java) – azurefrog

ответ

3

Похоже, что у вас может возникнуть проблема с резьбой. Вы, вероятно, нужно выполнить следующую команду в новом потоке (как показано)

class myRunner implements Runnable { 
    public void run() { 
    while (true) { 
     String ln = in.nextLine(); 
     out.println(ln); 
    } 
    } 
} 
new Thread(new myRunner()).start(); 
+0

Спасибо, это помогло. Я не ввел out.println(). Это ужасная ошибка. –

2

Попробуйте что-то вроде этого, вы можете выводить на консоль и в выходной файл, ваш не совсем «копирование».

System.out.println("whatever console output"); 

if (Files.notExists(outputFileName)) { 
    try { 
     File file = new File("output.txt"); 
      try (BufferedWriter output = new BufferedWriter(new FileWriter(file))) { 
       output.write("console output, blah blah"); 
       output.newLine();      
       output.close(); 
      }  
    } catch (IOException e) {} 

Вы можете сохранить свой консольный вывод в качестве списка массива и итерации, что к этому выходному файлу, а

for(i = 0, i < ArrayList.length, i++) { 
    output.write(i); 
    output.newLine(); 
} 
output.close(); 
Смежные вопросы