Ввод/вывод данных
В/в данных в 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) ; }}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.