Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Заочники 2020-2021 / Лекция 3.ppt
Скачиваний:
71
Добавлен:
15.06.2021
Размер:
1.72 Mб
Скачать

Система ввода-вывода Java.

Лекция 3

Пример работы с потоками объектов

Назначение — запись и чтение классов в поток, например в файл. Для этого такие классы должны быть помечены интерфейсом-маркером Seriazable

Класс «персоны»

package Test;

import java.io.Serializable;

public class Person implements Serializable {

private static final long serialVersionUID = 1L;

private String name; public int age; public double height;

public boolean married;

public Person(String n, int a, double h, boolean m)

{

this.name

= n;

this.height

= h;

this.age

= a;

this.married = m;

}

public String getName() { return this.name;

}

}

Класс коллекции (списка) «персон»

package Test;

import java.io.Serializable; import java.util.ArrayList;

public class Persons implements Serializable {

private static final long serialVersionUID = 2L;

private ArrayList<Person> persons;

public Persons(ArrayList<Person> persons) { this.persons = persons;

}

public ArrayList<Person> getAll() { return this.persons;

}

}

Система ввода-вывода Java.

Лекция 3

Пример работы с потоками объектов

try {

//Записываем студента

FileOutputStream fos = new FileOutputStream("C:/Users/Aam/eclipse-workspace/Test/human.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos);

Person person = new Person("Студент1",20,175,false); oos.writeObject (person);

//Читаем студента

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("C:/Users/Aam/eclipse-workspace/Test/human.txt"));

Person inperson = (Person) ois.readObject();

System.out.printf("Имя: %s \t Возраст: %d \n", inperson.getName(), inperson.age); //Имя: Студент1

Возраст: 20

//Записываем студентов ArrayList<Person> p = new ArrayList(); p.add(person);

person = new Person("Студент2",22,175,false); p.add(person);

Persons ps = new Persons(p);

fos = new FileOutputStream("C:/Users/Aam/eclipse-workspace/Test/persons.txt"); oos = new ObjectOutputStream(fos);

oos.writeObject (ps);

//Читаем студентов

ois = new ObjectInputStream(new FileInputStream("C:/Users/Aam/eclipse-workspace/Test/persons.txt")); Persons inpersons = (Persons) ois.readObject();

p = inpersons.getAll();

p.forEach((x)->System.out.printf("Имя: %s \n", x.getName())); //Имя: Студент1 Имя: Студент2

}

catch(Exception e){

}System.out.println(e.getMessage());Содержимое файла persons.txt

Система ввода-вывода Java.

Лекция 3

System.in, System.out, System.err

Для работы с вводом и выводом данных в Java используют предопределенные

статические переменные in, out, err класса System из автовключаемого в каждую программу пакета java.lang. Эти переменные являются ссылками на потоки.

Некоторые методы классов, наследников InputStream и OutputStream

Система ввода-вывода Java. Буферизация.

Лекция 3

Система ввода-вывода Java. Буферизация.

Лекция 3

Подчинение выходного потока буферизации приводит к блокировке вывода на консоль символов с помощью метода write, однако метод println выведет данные т.е. метод

println не является буферезированным, а write – является.

Кроме того, положение вызова метода println приводит к выводу содержимого буфера потока System.out, «заблокированного» буферизацией через переменную bos.

Размер буфера по умолчанию - 8 кб

Система ввода-вывода Java. Байтовые потоки в работе с файлами. Лекция 3

Байтовые потоки часто используют для работы с файлами, особенно если это «посимвольная работа», например, перекодировка, а также какие-то низкоуровневые протоколы обмена данными.

Для чтения (ввода) данных из файла используется метод read() класса FileInputStream

Форма записи создания объекта файлового потока чтения файла:

FileInputStream(String “FileName”) throws FileNotFoundException

Для записи (вывода) данных в файл используется метод write(int bytteval) класса FileOutputStream

Форма запси создания объекта файлового потока чтения файла:

FileOutputStream(String “FileName”) throws FileNotFoundException

FileOutputStream(String “FileName”, boolean append) throws FileNotFoundException

Система ввода-вывода Java. Байтовые потоки в работе с файлами. Лекция 3

Система ввода-вывода Java. Символьные потоки.

Лекция 3

Классы для работы с символьными потоками

Система ввода-вывода Java. Символьные потоки.

Лекция 3

Некоторые методы классов, наследников Reader и Writer

Система ввода-вывода Java. Символьные потоки. Лекция 3 Пример. Ввод нескольких строк с консоли с помощью BufferedReader

Пример. Ввод символов с помощью BufferedReader

Соседние файлы в папке Заочники 2020-2021