Файловый ввод-вывод в приложениях
Файловый ввод-вывод В языке 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.
Дата добавления: 2016-01-03; просмотров: 549;