2015-06-13 3 views
1

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

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

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. Внутри его конструктора мы вызываем имя файла, который мы создали как String. Это запутанная часть. Я не понимаю, что делают PrintWriter и FileWriter. Похоже, что FileWriter создает наш файл, а PrintWriter предоставляет нам метод println() для печати двух чисел в файле. После исследования я обнаружил, что вы можете в значительной степени достичь той же цели как с FileWriter, так и с PrintWriter. Какова цель обучения таким образом обработки файлов и что именно делают эти два класса? Спасибо за помощь в разъяснении этого для меня!

+3

Вы можете рассмотреть ... прочитав javadoc классов. Они объясняют, для чего предназначены классы, и что они делают. –

+0

Правда, это кажется достаточно простым, однако я уже посмотрел документацию. Документация по-прежнему немного нечеткая для чтения, но это определение из Java: ** PrintWriter **: печать форматированных представлений объектов в поток текстового вывода. Вопрос: Является ли текстовый поток FileWriter в этом примере? ** FileWriter **: класс удобства для записи файлов символов. FileWriter предназначен для записи потоков символов. Вопрос: Является ли FileWriter потоком, и, написав файл символов, означает ли это, что он просто создает файл или также передает его? –

+1

Файловый писатель - это поток символов, который позволяет записывать символы в файл (как показывает его название). Он реализует Writer. PrintWriter печатает отформатированные представления объектов любому производителю. И FileWriter - это Writer. –

ответ

1

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

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

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

Смежные вопросы