Зумовлені потоки в Java, Блог про шифрування

Система введення/виведення мови Java містить стандартні потоки введення, виведення та виведення помилок. КласSystemпакетаjava.langмістить полеin, яке є посиланням на об'єкт класуInputStream, та поляout,err– посилання на об'єкти класуPrintStream, оголошені зі специфікаторамиpublicstaticі є стандартними потоками введення, виведення та виведення помилок відповідно . Ці потоки пов'язані з консоллю, але можуть бути перепризначені на інший пристрій.

Для призначення виведення текстової інформації довільний потік слід використовувати класPrintWriter, що є підкласом абстрактного класуWriter.

При найбільш зручному виведенні інформації у файл (або будь-який інший потік) слід організувати наступну послідовність ініціалізації потоків за допомогою класуPrintWriter:

New PrintWriter(New BufferedWriter()

New FileWriter(New File("file.txt")))));

У результаті класBufferedWriterвиступає класом-обгорткою для класуFileWriter, так само як і класBufferedReaderдляFileReader.

Наведений нижче приклад демонструє виведення файл рядків і чисел з плаваючою точкою.

// приклад # 5: виведення у файл:DemoWriter.java

publicclassDemoWriter

publicstaticvoidmain(String[] args)

File f =newFile("res.txt");

FileWriter fw =null;

fw =newFileWriter(f,true);

>catch(IOException e)

System.err.println("помилка відкриття потоку" + e);

BufferedWriter bw =newBufferedWriter(fw);

PrintWriter pw =newPrintWriter(bw);

for(doubleversion : v)

pw.printf("Java %.2g%n", version);

У результаті файлres.txtбуде поміщена наступна інформація:

Для виведення даних у файл у текстовому форматі використовувався фільтрований потік виведенняPrintWriterта методprintf(). Після з'єднання цього потоку з дисковим файлом за допомогою символьного потокуBufferedWriterта зручного засобу запису у файлFileWriterстає можливим запис текстової інформації за допомогою звичайних методівprintln(),print(),printf(),format(),write(),append().

На відміну від Java 1.1, у мові Java 1.2 для консольного введення використовується не байтовий, а символьний потік. У цій ситуації для введення використовується підкласBufferedReaderабстрактного класуReaderта методиread()таreadLine()для читання символу та рядка відповідно . Цей потік для організації читання файлу найкраще ініціалізувати об'єктом класуFileReaderу вигляді:

New BufferedReader(New FileReader(New File("f.txt")));

Читання з створеного в попередньому прикладі файлу з використанням зручної технології можна зробити так:

// приклад # 6 : читання з файлу:DemoReader.java

publicclassDemoReader

publicstaticvoidmain(String[] args)

newBufferedReader(newFileReader("res.txt"));

while((tmp = br.readLine()) !=null)

//пробіл використовувати як роздільник