В/в данных в Java поток ориентирован. Абстракцию, которая производит или потребляет информацию.

Страницы работы

Содержание работы

Ввод/вывод данных

В/в данных в Java поток ориентирован. Под потоком понимают абстракцию, которая производит или потребляет информацию.

Классы и интерфейсы для организации в/в сосредоточены в пакете Java.10.

В первоначальных версиях использовались только низкоуровневые байтовые потоки, начиная с Java 1.1 были добавлены и символьные потоки. Итак, поток можно рассматривать как условный канал по которому отсылаются и получаются данные (безотносительно к конкретному устройству, которое стоит за конкретным потоком).

В стороне от данной концепции стоит класс File (аналог соответствующего класса в C++), часто используемый как промежуточное звено потока, класс FileDescription и некоторые другие классы, связанные с обработкой файлов.

Ввод-вывод информации в Java

Базируется на 4 абстрактных классах InputStream, OutputStream для байтовых потоков и Reader Writer – для символьных потоков.

Байтовые потоки

- могут использоваться с любым типом объектов, включая данные в двоичном коде

FileInputStream используется для создания входного потока из файла (чтения) байтов данных из файла, например, на МД.

FileOutputStream -  для приемки данных из потока и организации записи байт в файл.

Пример: простейшей программы: import java.io.*;

Class CopyFile

{public static void main (string [ ] args)

{ try  {

File infile = new   File (.........-file.dat);

File outfile = new File (outfile.dat);

FileInputStream    inStream= new file

FileOutputStream  outStream =

New   FileOutputStream=

New FileOutputStream (outfile)

int C ;

while ((c=insteam.read (  ))!= -1)

{outStream.write (c)}

intStream.close (  );

outStream.close

catch (FileNotFoundExpeption ex) {  } }}

Можно создать файловые потоки и не используя промежуточный класс  File

FileInptStream inSream=new FileOutputstream («outfile.........?)

FileOutputSream = new FileOutputStream (outfile........?)

Для организации консольного ввода организуется чтение символа из класса BufferedReader, поддерживающего буферизированный входной поток.

Для этого используется класс System, в котором предопределены 3 поточные переменные.

In,out  и err

Объект System.in используется как стандартный ввод (с клавиатуры)

System.out – объект потока стандартного вывода. System.err. Стандартный поток ошибок, связанный с консолью.

Чтобы получить символьный поток, связанный с консолью можно использовать класс BufferedReader, поддерживающий буферизированный входной поток.

Пример кода для чтения строк, вводимых с клавиатуры.

Import java.io.* 1

Class Readlines

{public static void main (string args [  ]

throws  IOException

{BufferedReader (new InputStreamReader (System.in)

// где InputStreamReader – подкласс

// абстрактного класса Reader, который преобразовывает байты в символы.

//br – объект класса BufferReader, связанный с клавиатурой через system.in

В данном случае вызывается конструктор InputStreamReader (InputStream inputStream), где в части параметра используется sustem.in – объект типа InputStream, ассоциированный с консолью.

String str

System.ont.pritln («введите строки текста или stop - для завершения»)

Clo

{str = br.readhine (  );

// чтение строки

// pw.println (str); либо system.out.println (str) ; }

while (! Str.eals («stop»)) }}

где PrintWriter – поток символьного вывода, имеющий несколько конструкторов. Здесь используется

PrintWriter (OutputSream outputStream boolean flushOnNewLine)

Если flushOnNewLine – true

Сбрасывается в буфер вывода автоматически. Класс поддерживает методы print (  ) и print (  ) для всех типов. Для консольного вывода необходимо создать объект system.out  для выходного потока (смотри код).

Коллекции

- содержится в пакете Java.util

Коллекции стандартизируют способ обработки групп объектов.

Цель р—коллекций – реализация динамических массивов, связанных  списков деревьев, взаимодействие между различными типами коллекций, расширение (адаптация) коллекций для решаемых задач, т.е обработки групп объектов.

В структуре коллекций определено несколько интерфейсов

Интерфейс collection – верхний уровень иерархии для работы с группами объектов (в нем объявлены методы, которые исследуются всеми коллекциями).

List -  работа с последовательностями (списками объектов)

Set – для работы с наборами, содержащими уникальные элементы

SortedSet – работа с сортированными наборами.

Методы Collection

Loolean add (Object obj)

Добавляет объект к вызывающей коллекции try- добавлен

False  - если obj..........является элем.

..........addAll (Collection c)

добавл. Все элементы колл. С к существующим

void clear (  ) -  удаляет все элементы

Boolean remove (object obj)  - удаляет один экземпляр из коллекции

Int size (  ) ; возвращает число элементов, содержащихся в вызыв. коллекции….

Интрефейсыт Comparator – определяет как сравниваются 2 объекта, Iterator  ListIterator работают с отдельными элементами в коллекции.

Пример использования класса ArryList, расширяющего класс Abstrctlist и реализующего интерфейс List.

В Java массивы имеют фиксированную длину.  И после создания не могут изменяться. Для динамической организации массивов используется коллекция Arraylist, позволяющая увеличивать и уменьшать размерность массива.

Array List

Import java.util*

Import java.io.*

Class ArrayListDemo{

Public static void main (String arga [ ])

{ArrayList al=new ArrayList (  );

System.out.println («Начальный размер массива»)

al: «+size ( ) )

al.add («СТ»)

al.add  («А»)

al.add («DЛД»)

al.add («F»)

al.add («Е»)

al.add (1, «К»)

System.out.println («Содержимое al: «+al»)

System.out.println («Размер а1 после добавлений : «+al.size ( )) ;

al. Remove («FЛ»)

al.remove (1)

al.romove («Е»)

System.out.println («Cодрежимое al: «+al) 

PrintWriter pw=new PrintWriter pw=new (System.out, true)

Pw.println («Содержимое al : «+ al) ; }}

Похожие материалы

Информация о работе