Зумовлені потоки в 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)
//пробіл використовувати як роздільник