Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
230102 5к / СПО / УПП.doc
Скачиваний:
58
Добавлен:
20.04.2015
Размер:
465.41 Кб
Скачать

11. Файловый ввод-вывод в приложениях

Файловый ввод-вывод В языке Javaорганизован на основе потоков, т.е.Javaне поддерживает небуферизированный ввод-вывод информации, что значительно усложняет осуществление простых операций чтения/записи файла но одновременно упрощает операции чтения/записи объектов. Существует два основных файловых потока: поток вводаFileInputStreamи поток выводаFileOutputStream.

Файловый поток в языке программирования Java, это объект связывающий физический файл на диске с областью оперативной памяти для временного хранения информации. Все операции работы с файлами должны осуществляться в блоке обработки исключенийIOException.

Для примера, организация чтения файла, в общем виде будет выглядеть следующим образом:

try

{

FileInputStream is=new FileInputStream(имя файла);

// Операции чтения файла

is.close();

}

catch(IOException e)

{

System.out.println(e.getMessage());

}

А для организации записи:

try

{

FileOutputStream os=new FileOutputStream(имя файла);

// Операции записи файла

os.close();

}

catch(IOException e)

{

System.out.println(e.getMessage());

}

Использование данных объектов непосредственно для чтения и записи достаточно неудобно, т.к. Потоки FileInputStreamиFileOutputStreamимеют только функции чтения и записи байтовых массивов, а языкJavaкрайне критически относиться к преобразованию типов. Для упрощения работы с в языкJavaтекстовыми файлами были добавлены классы чтения и записи массивов символов. Для чтения текстовой информации был создан классInputStreamReader, а для записиOutputStreamWriter.

Использование класса InputStreamReaderдля чтения текста имеет следующий вид:

try

{

FileInputStream is=new FileInputStream(имя файла);

InputStreamReader isr=new InputStreamReader(is);

// Операции чтения файла

isr.close();

is.close();

}

catch(IOException e)

{

System.out.println(e.getMessage());

}

А класса OutputStreamWriterдля организации записи:

try

{

FileOutputStream os=new FileOutputStream(имя файла);

OutputStreamWriter osw=new OutputStreamWriter(os);

// Операции записи файла

osw.close();

os.close();

}

catch(IOException e)

{

System.out.println(e.getMessage());

}

Из данного примера видно, что классы InputStreamReaderиOutputStreamWriterне являются непосредственно классами чтения/записи, а представляют собой лишь классы преобразователи текстовых массивов в байтовые и обратно.

Наиболее широкое распространение при программировании на языке Javaполучили классы чтения записи объектов. ЭтоObjectInputStream– класс чтения объектов иObjectOutputStream– класс записи объектов.

Использование класса ObjectInputStreamдля чтения текста имеет следующий вид:

try

{

FileInputStream is=new FileInputStream(имя файла);

ObjectInputStream isr=new ObjectInputStream(is);

// Операции чтения файла

isr.close();

is.close();

}

catch(IOException e)

{

System.out.println(e.getMessage());

}

А класса ObjectOutputStreamдля организации записи:

try

{

FileOutputStream os=new FileOutputStream(имя файла);

ObjectOutputStream osw=new ObjectOutputStream (os);

// Операции записи файла

osw.close();

os.close();

}

catch(IOException e)

{

System.out.println(e.getMessage());

}

Так же как и классы чтения/записи текста, классы чтения/записи объектов представляют собой преобразователи информации объектов в вид массива байт, который далее записывается на диск или читается с него с помощью классов FileInputStreamиFileOutputStream.

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