- •Федеральное агентство по образованию рф
- •2. Организация программ на языке Java.
- •2.1. Обработка критических ошибок и методы их локализации в языке Java..
- •3. Ввод/вывод данных в консольном режиме.
- •4. Одномерные массивы.
- •5. Двумерные массивы.
- •Int a[][];
- •6. Разработка приложений на языке Java.
- •7. Разработка собственных объектов.
- •7.1. Объекты управления
- •8. Разработка аплитов.
- •9. Параллельные потоки в языке Java.
- •10. Использование таблиц при программировании на языке Java.
- •11. Файловый ввод-вывод в приложениях
- •Список рекомендуемой литературы
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.
