Пожалуйста, просмотрите код ниже:
// A.class
File file = new File("blah.txt");
FileWriter fileWriter = new FileWriter(file);
PrintWriter printWriter = new PrintWriter(fileWriter);
// B.class
File file = new File("blah.txt");
FileWriter fileWriter = new FileWriter(file);
BufferedWriter bWriter = new BufferedWriter(fileWriter);
В чем разница между этими двумя методами?
Когда следует использовать PrintWriter вместо BufferedWriter?
java
file
stream
filereader
bufferedreader
i2ijeya
источник
источник
PrintWriter
предоставляет больше методов (println
), но самое важное (и тревожное) отличие, о котором следует помнить, заключается в том, что он принимает исключения .Вы можете позвонить
checkError
позже, чтобы узнать, произошли ли какие-либо ошибки, но обычно вы бы использовали ихPrintWriter
для таких вещей, как запись в консоль - или в приложениях "быстро и грязно", где вы не хотите, чтобы вас беспокоили исключения (и где долгосрочная надежность не является проблемой).Я не уверен, почему аспекты «дополнительных возможностей форматирования» и «не проглатывать исключения» объединены в один класс - форматирование, очевидно, полезно во многих местах, где вы не хотите, чтобы исключения проглатывались. Было бы неплохо увидеть
BufferedWriter
в какой-то момент такие же способности ...источник
PrintStream
это файлOutputStream
.PrintWriter
это аWriter
.IOException
, что каждая другая абстракция ввода-вывода (Reader
иWriter
т. Д.) Заявляет, что ее методы вызывают,IOException
если что-то пойдет не так, -PrintWriter
нет.Как сказано в ответе TofuBeer, у обоих есть свои особенности. Чтобы воспользоваться всеми преимуществами PrintWriter (или любого другого писателя), но также использовать буферизованную запись, вы можете обернуть BufferedWriter нужным следующим образом:
PrintWriter writer = new PrintWriter( new BufferedWriter ( new FileWriter("somFile.txt")));
источник
PrinterWriter
уже создается файлBufferedWriter
.PrintWriter просто предоставляет методы печати на любом Writer в символьном режиме.
BufferedWriter более эффективен, чем его буферизованные методы. И он поставляется с методом newLine (), в зависимости от платформы вашей системы, для правильного управления текстовыми файлами.
BufferedReader позволяет читать текст из файла с байтами, преобразованными в символы. Это позволяет читать построчно.
PrintReader отсутствует, вам нужно выбрать другую реализацию Reader в соответствии с форматом вашего ввода.
источник
PrintWriter - это наиболее усовершенствованный Writer для записи символьных данных в файл.
Основное преимущество PrintWriter перед FileWriter и BufferedWriter:
PrintWriter printwriter = new PrintWriter("blah.txt");
(или)
FileWriter filewriter = new FileWriter("blah.txt"); PrintWriter printwiter = new PrintWriter(filewriter);
Мы можем записать любой тип примитивных данных непосредственно в файл (потому что у нас есть дополнительные перегруженные версии методов PrintWriter, то есть print () и println ()).
printwriter.print(65); //65
bufferedwriter.write(65); //A
printwriter.println(true); //true
источник
Как правило, Writer немедленно отправляет свой вывод в базовый поток символов или байтов. Если вывод подсказки не требуется, рекомендуется обернуть BufferedWriter вокруг любого Writer, чьи операции write () могут быть дорогостоящими, например FileWriters и OutputStreamWriters. Например,
Примечание. Текстовое содержимое блоков кода автоматически переносится по словам.
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
буферизует вывод PrintWriter в файл. Без буферизации каждый вызов метода print () приведет к преобразованию символов в байты, которые затем будут немедленно записаны в файл, что может быть очень неэффективным.
источник
BufferedWriter - записывает текст в выходной поток символов, буферизуя символы из потока символов. PrintWriter - печатает форматированные представления объектов в поток вывода текста.
источник
Я думаю, что причина использования PrintWriter уже упоминалась выше, но одна из важных причин заключается в том, что вы передаете объект файла напрямую конструктору PrintWriter, что упрощает его использование.
File file=new File(“newfile.txt”); PrintWriter pw=new PrintWriter(file);
источник