2016-12-13 5 views
0

Я хотел бы знать, как написать все строки из выходного файла java в файле .txt.
Я уже провел некоторые тесты, но, похоже, я не нашел решение:/
Вот небольшой код, если бы вы могли показать мне этот, было бы весьма полезно:
Нижеприведенный код просит пользователя записать в файл .txt, но я хочу, чтобы он записывал все напечатанные строки в .txt-файле, не спрашивая у пользователя ничего. СпасибоЗапись всего выходного файла java в txt-файле

package test; 

import java.io.BufferedReader; 
import java.io.FileOutputStream; 
import java.io.InputStreamReader; 
import java.io.PrintStream; 


public class Test { 

    public static void main(String[] args)throws Exception { 
     System.out.println("Hello"); 
     System.out.println("Hi"); 
     System.out.println("Hola"); 
     System.out.println("Bonjour"); 
     System.out.println("Hallo"); 
     System.out.println("Hej"); 
     System.out.println("Alo"); 
     System.out.println("Ciao"); 
     writeOutput(); 

    } 
    public static void writeOutput() throws Exception { 
     BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
     String lineFromInput = in.readLine(); 
     PrintStream out = new PrintStream(new FileOutputStream("output.txt")); 
     System.setOut(out); 
     out.println(lineFromInput); 
     out.close(); 
    } 

} 
+0

Вы записи на диск или на выходе для пользователя? – user2124871

+0

Возможный дубликат: http://stackoverflow.com/questions/1994255/how-to-write-console-output-to-a-txt-file – JDC

+0

Вы имеете в виду, что хотите записать «Hello» и т. Д. В файл вместе с тем, что использовать входы? – GurV

ответ

1

Использование непосредственно PrintStream, чтобы написать String значения.

public static void main(String[] args)throws Exception {   
    PrintStream printStream = new PrintStream(new File("output.txt")); 
    // hook for closing the stream 
    Runtime.getRuntime().addShutdownHook(new Thread(printStream::close)); 
    // writing 
    write(printStream,"Hello", "Hi", "Hola", "Bonjour", "Hallo", "Hej", 
    "Alo","Ciao");  
    // writing again 
    write(printStream, "A new String", "And again another one...");   
} 


public static void write(PrintStream printStream, String... values) throws Exception { 

    try{     
    for (String value : values){ 
     printStream.println(value); 
    } 
    printStream.flush(); 
    } 
    catch (Exception e){ 
     // handling exception 
    }  
} 

} 
+0

О, вау, спасибо, но есть ли способ сделать это с помощью отдельного метода? – Adriann

+0

Добро пожаловать. Конечно. Но почему ? Этот метод должен принимать параметры? Например, vargs String для записи в файл. – davidxxx

+0

BTW: Я бы рекомендовал делать 'Runtime.getRuntime(). AddShutdownHook (новый Thread (out :: close));' вместо того, чтобы вручную закрывать 'PrintStream' в конце' main', так как это также касается несколько потоков/исключений, не вызванных тем, что файл не был найден брошенным до конца основного. – fabian