2015-10-11 3 views
2

Я посещаю интро Java курс, и мой учитель использует PrintWriter так:почему мой учитель определить PrintWriter этот путь

String fileName = "chars.txt"; 
PrintWriter outFile = new PrintWriter(new FileWriter(fileName)); 

Из примеров я видел в Интернете, кажется, что люди используют один или Другие. Я хочу знать, почему он присваивает FileWriter PrintWriter так? На самом деле это не просто проблема, и я хочу знать, что происходит.

Это онлайн-курс, и учитель больше не отвечает на вопросы.

+0

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

+0

это онлайн-курс, и учитель больше не отвечает на вопросы или не обновляет вещи. – billgarr

+2

Вы уверены, что он не использовал 'new File (fileName)'? Или 'new FileWriter (fileName, true))'? Как показано на вашем посте, это не имеет большого смысла. Но вариант для добавления доступен только на уровне «файла» писателей. – laune

ответ

0

A FileWriter Используется для именованного файла (chars.txt в этом случае). В то время как PrintWriter используется для упрощения использования OutputStream путем добавления методов print.

Теперь существует конструктор для PrintWriter, который принимает имя файла. Таким образом, для использования конструктора PrintWriter было бы немного более эффективным кодом (но без разницы во времени выполнения). Если вы посмотрите на то, что делает конструктор по PrintWriter «s, это делает более или менее то, что ваш пример делает:

public PrintWriter(String fileName) throws FileNotFoundException { 
    this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName))), 
     false); 
} 

То, что я подозреваю, что ваш учитель делает демонстрирует огромную силу сцепления при использовании писателей/кос/и т. д. в стандартной библиотеке Java.

Также очень важно понять, что происходит под капотом, так хороший вопрос. Я рекомендую использовать Java IDE хорошего качества, например Eclipse, и установить полный JDK, чтобы вы могли следовать определениям конструкторов в исходный код стандартной библиотеки Java.

+0

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

0

Оба PrintWriter и FileWriter реализуют конструктор, который принимает имя файла в качестве параметра. Возможно, ваш учитель совершил непреднамеренную ошибку или он хотел представить вам the decorator pattern, который широко используется java.io.