Java — Работа с вводом-выводом — Уточнение

Я работаю над несколькими уроками по Java, и инструктор начал знакомить вас с работой ввода-вывода в Java. У меня просто есть пара вопросов, которые мог бы прояснить опытный Java-программист.

Приведенный ниже фрагмент кода представляет собой программу, которая создает текстовый файл (блокнот) в том же каталоге файлов, в котором я пишу свой код. После этого он просто печатает основные строки текста в этот файл.

import java.io.FileWriter; //Imports Filewriter class
import java.io.PrintWriter; //Imports PrintWriter class
import java.io.IOException; //Imports IOException

public class Chap17Part2
{

    public static void main(String[] args) throws IOException
    {
        String fileName = "grades.txt"; //Creating name for file
        PrintWriter outFile = new PrintWriter(new FileWriter(fileName)); //Question 1
        outFile.println(85); //Prints to file
        outFile.println(77); //Prints to file
        outFile.close(); //Ends buffer, and flushes data to file.

    }

}

Вопрос 1. Из-за кратких объяснений преподавателя эта строка кода меня немного сбивает с толку. Я знаю, что в этой строке мы создаем объект «outFile». После этого мы вызываем конструктор PrintWriter, а внутри его параметров вызываем конструктор FileWriter. Внутри его конструктора мы вызываем имя файла, который мы создали, как строку. Это запутанная часть. Я не совсем понимаю, что делают PrintWriter и FileWriter. Похоже, FileWriter создает наш файл, а PrintWriter предоставляет нам метод println() для печати двух чисел в файле. Проведя исследование, я обнаружил, что вы можете достичь одной и той же цели как с FileWriter, так и с PrintWriter. Какова цель обучения обработке файлов таким образом и что именно делают два класса? Спасибо за помощь в разъяснении этого для меня!


person Jeff Sours    schedule 13.06.2015    source источник
comment
Вы могли бы рассмотреть... чтение javadoc классов. Они объясняют, для чего нужны занятия и что они делают.   -  person JB Nizet    schedule 14.06.2015
comment
Правда, вроде все достаточно просто, однако я уже ознакомился с документацией. Документация все еще немного нечеткая для чтения, но это определение из Java: PrintWriter: печатает форматированные представления объектов в поток вывода текста. Вопрос: Является ли поток вывода текста FileWriter в этом примере? FileWriter: удобный класс для записи символьных файлов. FileWriter предназначен для записи потоков символов. Вопрос: Является ли FileWriter потоком, и, записывая символьный файл, означает ли это, что он просто создает файл или также передает его в потоковом режиме?   -  person Jeff Sours    schedule 14.06.2015
comment
Средство записи файлов — это поток символов, который позволяет записывать символы в файл (как следует из его названия). Он реализует Writer. PrintWriter распечатывает форматированные представления объектов любому записывающему устройству. А FileWriter — это Writer.   -  person JB Nizet    schedule 14.06.2015
comment
Спасибо за пояснение, но я должен спросить, что именно вы подразумеваете под форматированными представлениями объектов?   -  person Jeff Sours    schedule 14.06.2015
comment
Это происходит непосредственно из javadoc PrintStream. Он печатает двойные числа как десятичные числа, объекты с их методами toString(), нулевые значения с нулевым значением и т. д.   -  person JB Nizet    schedule 14.06.2015
comment
Хорошо, позвольте мне все прояснить и сказать мне, правильно ли это. По сути, в рассматриваемой строке кода я начинаю с инициализации PrintWriter и вызова его конструктора, чтобы преобразовать мой печатный код в текстовый файл. Инициализация FileWriter в параметрах PrintWriter удовлетворила требованиям PrintWriter по установлению потока для PrintWriter для отправки отформатированного кода. Будет ли это правильно?   -  person Jeff Sours    schedule 15.06.2015
comment
Я бы так не сказал. Код эквивалентен FileWriter fw = new FileWriter(fileName); PrintWriter outFile = new PrintWriter(fw);. Поэтому он сначала создает FileWriter, который записывает символы в файл, а затем создает PrintWriter, который печатает свои значения в FileWriter.   -  person JB Nizet    schedule 15.06.2015
comment
Отлично и очень понятно! На этом вопросы, которые у меня есть по этому поводу, заканчиваются. Если вы дадите формальный ответ, я вернусь и отмечу его как правильный, чтобы закрыть вопрос. Я ценю помощь!   -  person Jeff Sours    schedule 15.06.2015


Ответы (1)


Код эквивалентен

FileWriter fw = new FileWriter(fileName); 
PrintWriter outFile = new PrintWriter(fw);

Поэтому он сначала создает FileWriter, который записывает символы в файл, а затем создает PrintWriter, который печатает свои значения в FileWriter.

person JB Nizet    schedule 15.06.2015