PrintWriter и FileWriter вместо использования файлов или программ с использованием файлов (JAVA) - PullRequest
0 голосов
/ 17 июня 2020

Для простоты написания и для того, чтобы вам было скучно, ребята, у меня просто вопрос, и если вы, ребята, можете дать мне еще один пример, может быть, что-то попроще.

Вот код

PrinterWriter w = new PrinterWriter(new FileWriter("test.txt"));

хорошо, так что все вышеперечисленное работает отлично, но так же работает

FileWriter fw = new FileWriter("test.txt");

Так работает ли это

PrintWriter w = PrintWriter(new File("test.text");

Хорошо, теперь все это работает, но меня больше беспокоит о том, почему работает тот, который выделен курсивом.

Я прочитал часть документации и заметил, что в качестве аргумента конструктора используется Writer, который FileWriter является расширением.

Но если это правда, то почему это не работает (или, возможно, работает)

FileWriter fw = FileWriter(new PrintWriter("test.txt)); 

Я еще не подтвердил, работает ли это, но я не вижу, что это будет делать в любом случае (другие делают смысл) но может ли кто-нибудь объяснить хоть малейшую информацию?

1 Ответ

1 голос
/ 17 июня 2020

Java использует шаблон Decorator для предоставления специализированных комбинаций Writer / Stream

  • Writer объекта, в который вы можете записывать символы
  • PrintWriter special Writer который предоставляет параметры форматирования, такие как разрывы строк (например, println()) или printf aso
  • OutputStream объект для записи байтов в

Итак:

A FileWriter("test.txt") - это объект, в который вы можете записывать символы, которые записываются в файл.

A PrintWriter(new FilteWriter("test.txt")) - это объект, который предоставляет параметры форматирования, который записывает символы в объект, который записывает в файл .

A PrintWriter(new File("test.txt")) семантически то же самое, средство записи с параметрами форматирования, которое записывает символы в файл. (просто без дополнительного шага)

FileWriter fw = FileWriter(new PrintWriter("test.txt)); не компилируется.

Двумя другими распространенными писателями являются BufferedWriter StringWriter. BufferedWriter оптимизируется для больших фрагментов записи, он записывает в базовый Writer только в том случае, если буфер заполнен или очищен. StringWriter - это базовая c реализация «в памяти», которая добавляется к String.

С этим: BufferedWriter( new PrintWriter( new FileWriter("test.txt")));" блок записи на основе фрагментов без параметров форматирования, который использует PrintWriter и FileWriter для записи символов в файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...