Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: А.В. Фролов, Г.В. Фролов - Microsoft Visual J++
<<-[Весь Текст]
Страница: из 275
 <<-
 
а базе класса OutputStream. В нем 
имеется два конструктора, прототипы которых представлены ниже:
public ByteArrayOutputStream();
public ByteArrayOutputStream(int size);
   Первый из этих конструкторов создает выходной поток в оперативной памяти с 
начальным размером буфера, равным 32 байта. Второй позволяет указать 
необходимый размер буфера.
   В классе ByteArrayOutputStream определено несколько достаточно полезных 
методов. Вот некоторые из них:
public void reset();
public int size();
public byte[] toByteArray();
public void writeTo(OutputStream out);	
   Метод reset сбрасывает счетчик байт, записанных в выходной поток. Если 
данные, записанные в поток вам больше не нужны, вы можете вызвать этот метод и 
использовать память, выделенную для потока, для записи других данных.
   С помощью метода size можно определить количество байт данных, записанных в 
поток.
   Метод toByteArray позволяет скопировать данные, записанные в поток, в массив 
байт. Этот метод возвращает адрес созданного для этой цели массива.
   С помощью метода writeTo вы можете скопировать содержимое данного потока в 
другой выходной поток, ссылка на который передается методу через параметр.
   Для выполнения форматированного вывода в поток, вы должны создать поток на 
базе класса DataOutputStream, передав соответствующему конструктору ссылку на 
поток класса ByteArrayOutputStream.
   Класс ByteArrayInputStream
   С помощью класса ByteArrayInputStream вы можете создать входной поток на 
базе массива байт, расположенного в оперативной памяти. В этом классе 
определено два конструктора:
public ByteArrayInputStream(byte buf[]);
public ByteArrayInputStream(byte buf[], int offset, 
  int length);
   Первый конструктор получает через единственный параметр ссылку на массив, 
который будет использован для создания входного потока. Второй позволяет 
дополнительно указать смещение offset и размер области памяти length, которая 
будет использована для создания потока.
   Вот несколько методов, определенных в классе ByteArrayInputStream:
public int available();
public int read();
public int read(byte b[], int off, int len);
public void reset();
public long skip(long n);	
   Наиболее интересен из них метод available, с помощью которого можно 
определить, сколько байт имеется во входном потоке для чтения.
   Обычно класс ByteArrayInputStream используется вместе с классом 
DataInputStream, что позволяет организовать форматный ввод данных.
   Класс StringBufferInputStream
   Класс StringBufferInputStream предназначен для создания входного потока на 
базе текстовой строки класса String. Ссылка на эту строку передается 
конструктору класса StringBufferInputStream через параметр:
public StringBufferInputStream(String s);
   В классе StringBufferInputStream определены те же методы, что и в только что 
рассмотренном классе ByteArrayInputStream. Для более удобной работы вы, 
вероятно, создадите на базе потока класса StringBufferInputStream поток класса 
DataInputStream.
   Приложение MemStream
   Аплет MemStream создает два потока в оперативной памяти - выходной и входной.
 Вначале во время инициализации метод init создает выходной поток и записывает 
в него текстовую строку “Hello, Java!”. Содержимое этого потока затем 
копируется в массив, и на базе этого массива создается входной поток. 
   Во время рисования окна аплета метод paint создает из только что упомянутого 
массива входной поток, читает из этого потока одну строку и отображает ее в 
окне аплета.
   Аплет не может работать с обычными локальными файлами, поэтому для 
выполнения описанных выше действий необходимы потоки в оперативной памяти.
   Исходные тексты приложения
   Исходный текст аплета MemStream приведен в листинге 2.3.
Листинг 2.3. Файл MemStream\MemStream.java
// =========================================================
// Работа с потоками в оперативной памяти
//
// (C) Фролов А.В, 1997
//
// E-mail: [email protected]
// WWW:    http://www.glasnet.ru/~frolov
//            или
//         http://www.dials.ccas.ru/frolov
// =========================================================
import java.applet.*;
import java.awt.*;
import java.io.*;

public class MemStream extends Applet
{
  // Выходной поток
  DataOutputStream OutStream;

  // Входной поток
  DataInputStream  InStream;

  // Строка, которая будет записана в поток
  String sOut;

  // Массив, в который будет копир
 
<<-[Весь Текст]
Страница: из 275
 <<-