Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
49
Добавлен:
12.05.2015
Размер:
1.82 Mб
Скачать

Глава 12. Ввод/вывод, апплеты и другие темы 311

потока в буфер вывода (на диск) каждый раз, когда выводится символ newline (\n). Если fiushOnNewiine — true, поток сбрасывается автоматиче­ски, если — false, то не автоматически,

printwriter поддерживает методы print о и println о для всех типов, вклю­чая object. Поэтому эти методы можно применять так же, как они исполь­зовались с объектом system, out. Если аргумент не является простым типом, то методы класса Printwriter вызывают объектный метод tostringo и затем печатают результат.

Чтобы записывать на консоль, используя класс printwriter, создайте объект system, out для выходного потока, и сбрасывайте поток после каждого символа newline. Например, следующая строка кода создает объект типа printwriter, который соединен с консольным выводом:

Printwriter pw = new Printwriter(System.out, true);

Очередное приложение иллюстрирует использование Printwriter для управ­ления консольным выводом:

// Демонстрирует Printwriter. import java.io.*;

public class PrintWriterDemo {

public static void main(String args[]) {

Printwriter pw = new Printwriter(System.out, true); pw.println("Это строка: ") ; int i = -7; pw.println(i); double d = 4.5e-7;

pw.printIn(d) ; x

}

Вывод этой программы:

Это строка:

_'-?

4.5Е-7

Помните, что во время изучения Java или отладки программы нет ничего не правильного в использовании system, out для записи простого текстового вывода на консоль. Однако с использованием Printwriter ваши реальные приложения будет проще интернационализировать. Поскольку никакого преимущества от использования Printwriter в демонстрационных програм­мах этой книги не проявляется, для записи на консоль мы продолжим ис­пользовать объект System, out.

312 Часть I. Язык Java

Чтение и запись файлов

Java обеспечивает ряд классов и методов, которые позволяют читать и запи­сывать файлы. Для Java все файлы имеют байтовую структуру, a Java обес­печивает методы для чтения и записи байтов в файл. Кроме того, Java позволяет упаковывать байтовый файловый поток в символьно-ориен­тированный объект. Эта методика описана в Части П. В данной главе рас­сматриваются основы файлового ввода/вывода.

Для создания байтовых потоков, связанных с файлами, чаше всего исполь­зуются два ПОТОЧНЫХ класса — FilelnputStream И FileOutputStream. Для ОТ-

крытия файла вы просто создаете объект одного из этих классов, указывая имя файла как аргумент конструктора. Хотя оба класса поддерживают не­сколько переопределенных конструкторов, мы будем использовать только следующее формы:

FilelnputStream(String fileNatoe) throws FileNotFoundException FileOutputStream(String fileName) throws FileNotFoundException

где filename определяет имя файла, который вы хотите открыть. Когда вы создаете входной поток при отсутствующем файле, выбрасывается исключе­ние FileNotFoundException. ДЛЯ ВЫХОДНЫХ ПОТОКОВ, ССЛИ файл НС МОЖ6Т

быть создан, выбрасывается такое же исключение (FileNotFoundException). Когда выходной файл открывается, любой файл, существовавший ранее с тем же самым именем, разрушается.

В ранних версиях Java FileOutputstreamO выбрасывал исключение lOException, когда выходной файл не мог быть создан. В Java 2 это было из менено.

После завершения работы с файлом, его нужно закрыть, вызвав метод

close (). Он определен как В FilelnputStream, так И В FileOutputStream

в следующей форме:

void close() throws lOException

Для чтения файла можно использовать версию метода read <), который оп­ределен в FilelnputStream. Мы будем использовать такую версию:

int read() throws lOException

При каждом вызове он (метод) читает один байт из файла и возвращает его в форме целочисленного значения. Когда read о встречает символ конца файла (eof), то возвращает —1. Метод read о может выбрасывать исключе­ ние lOExcepliibn1. ; ;:;-

Следующая программа использует read о для ввода и отображения содер­жимого текстового файла, имя которого указывается как параметр команд-

Соседние файлы в папке JavaLit