Мне нужно писать символы в файл или на стандартный вывод. И мне любопытно, можно ли это сделать одним способом.Запись на Java в файл или System.out
Теперь у меня есть что-то вроде этого:
OutputStream out;
if(toConsole)
out = System.out;
else
out = new FileOutputStream(file);
write(out);
}
void write (OutputStream str){
....
str.write(string);
Но это проблема, которую я использую (в случае, когда «ул» является System.out) написать вместо печати? (print java doc: «символы строки преобразуются в байты в соответствии с кодировкой символов по умолчанию платформы») В случае, если я буду использовать PrintWriter (или PrintStream) в качестве параметра, то я не могу использовать BufferedWriter, и запись в файл будет медленнее ,
Можно использовать один и тот же код (и те же методы) для записи в файл и в System.out? (Это для моего школьного проекта, поэтому я хочу, чтобы он был «чистым» и полностью правильным)
Что вы можете сделать, это перенаправить stdout на собственный Printsteeam, как показано [здесь] (http://stackoverflow.com/questions/12945537/how-to-set-output-stream-to-textarea/12945678# 12945678), который на самом деле демонстрирует прокси-подход, который позволяет перенаправить вывод в другое место, но также он появляется на консоли. Я использовал этот подход для вывода на печать программ, которые не включали протоколирование. – MadProgrammer
. Вы можете легко обернуть PrintWriter/PrintStream/etc вокруг BufferedWriter, как показано в [doc] (http://docs.oracle.com/ javase/7/docs/api/java/io/BufferedWriter.html), но лично я бы не стал беспокоиться об этом в любом случае. – Radiodef