Главная Обратная связь

Дисциплины:






Основні теоретичні положення



У мові Java потоком уведення називається об’єкт, з якого можна зчитувати послідовність байтів, а потоком виведення – об’єкт, у який цю послідовність можна записувати. Відповідно існують два абстрактних класи – InputStream й OutputStream.

Якщо інформація представлена в кодуванні Unicode (один символ займає 2 байти), то потоки, орієнтовані на послідовність байтів незручні для її обробки. Тому є інша ієрархія класів, у вершині якої знаходяться класи Reader і Writer.

Створення й використання текстового файлу буде проілюстровано на прикладі запису й файл і читання з файлу даних об’єктів класу Goods, що ми розглядали в лабораторних роботах.

Для виведення тексту в файл даних служить клас PrintWriter. Об’єкти цього класу можуть виводити на друк рядки й числа в текстовому форматі. Оскільки в цьому класі не уточнюється, куди слід виводити дані, об’єкт PrintWriter можна об’єднати з об’єктом, що визначає адресата. Наприклад:

PrintWriter out=new PrintWriter(new FileWriter(“A://goods.dat”));

Записати дані в об’єкт класу PrintWriter можна за допомогою методів print() й println(). Метод println() автоматично додає символ кінця рядка, прийнятий у даній операційній системі.

Для читання тексту існує єдиний клас BufferedReader, у якому є метод readLine(), що дозволяє зчитувати рядки тексту. Об’єкт цього класу потрібно об’єднати з джерелом даних.

BufferedReader in=new BufferedReader(new FileReader(“A:/goods.dat”));

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

При зчитуванні інформації з файлу відбувається зчитування рядка, що представляє дані одного об’єкта Goods. Клас StringTokenizer дозволяє розділити цей рядок на окремі частини (лексеми).

StringTokenizer t=new StringTokeniszer(s,”|”);

тут s-рядок, прочитаний з файлу.

Вигляд екрану працюючого додатка може бути такий:

 

 

 

Контрольні запитання:

  1. Що таке потік уведення? Виведення?
  2. Для чого призначені абстрактні класи InputStream? OutputStream?
  3. Чому потоки, орієнтовані на послідовність байтів, незручні для обробки інформації, якщо вона представлена в кодуванні Unicode?
  4. Для чого призначений клас PrintWriter? Який метод цього классу дозволяэ записати даны?
  5. Для чого призначений клас Bufferedreader? Який метод цього классу дозволяэ прочитати даны?
  6. Для чого призначений клас StringTokeniser? Як його використовувати?

 






sdamzavas.net - 2020 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...