Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Java.doc
Скачиваний:
836
Добавлен:
04.06.2015
Размер:
5.55 Mб
Скачать

Import java.Io.*;

Import javax.Swing.*;

public class JavaApplicationFile

{

public static void main(String[] args) throws IOException

{

String text;

try // попытка открытия файла

{

// создание файлового потока ввода из исходного файла

String fileInputPath="E:/User/ishod.txt";

FileInputStream fileIn=new FileInputStream(fileInputPath);

// создание файлового потока вывода в выходной файл

String fileOutputPath="E:/User/result.txt";

FileOutputStream fileOut=new FileOutputStream(fileOutputPath);

int n; // переменная целого типа для чтения/записи

n=fileIn.read();// чтение первого символа из исходного файла

fileOut.write(n); // запись первого символа в выходной файл

while(n!=-1) // пока не прочитан конец файла

{

n=fileIn.read(); // прочитать очередной символ из исходного файла

if (n==-1) // на всякий случай

break;

if (n==' ') // заменяем пробел на символ подчеркивания

n='_';

fileOut.write(n); // записать его в выходной файл

}

text="Программа закончила работу успешно!";

JOptionPane.showMessageDialog(null, text);

fileIn.close(); // закрытие исходного файла

fileOut.close(); // закрытие выходного файла

}

catch(FileNotFoundException e) // обработка исключительной // ситуации

{

text="Файл не найден!";

JOptionPane.showMessageDialog(null, "Проверьте путь к файлу: " + e, text, JOptionPane.ERROR_MESSAGE);

}

}

}

Результат работы программы в нормальныхусловиях:

Структура выходного файла result.txt:

Среди_миров,_в_мерцании_светил,

Одной_звезды_я_повторяю_имя,

Не_потому,_чтоб_я_ее_любил,

А_потому,_что_я_томлюсь_с_другими.

Иннокентий_Анненский

Результат работы программы в исключительнойситуации (исходный файл не найден):

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

Буфер– это часть оперативной памяти, в которой накапливается информация. Когда буфер заполнен, его содержимое быстро переносится процессором, буфер очищается и снова заполняется информацией.

Буферизированныйпоток позволяет считывать данные не посимвольно, а построчно. Он создается на основе символьного потока, который, в свою очередь создается на основебайтовогопотока с помощью классовFileInputStream иFileOutputStream. На их основе с помощью классов InputStreamReaderиOutputStreamReaderсоздаютсясимвольныепотоки. И, наконец,буферизированныепотоки создаются на основе классовBufferedReadeBufferedWriter.

Пример: считать из предыдущего текстового файлаishod.txtинформацию, записанную в нем, и переписать ее в файлresult.txt, перевернув каждую строку. Перевернутые строки также вывести на консоль.

Код программы:

package javaapplicationbuffer;