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

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

Библиотека :: Компьютеры и Программирование :: А.В. Фролов, Г.В. Фролов - Microsoft Visual J++
<<-[Весь Текст]
Страница: из 275
 <<-
 
ле ttype, а слова - в поле sval. По умолчанию 
используется символ кавычек ‘”’, однако с помощью метода quoteChar вы можете 
задать любой другой символ.
   При необходимости в процессе разбора вы можете определить номер текущей 
строки, вызвав для этого метод lineno:
public int lineno();
   После вызова метода pushBack следующий вызов метода nextToken приведет к 
тому, что в поле ttype будет записано текущее значение, а содержимое полей sval 
и nval не изменится. Прототип метода pushBack приведен ниже:
public void pushBack();
   Метод toString возвращает текстовую строку, представляющую текущий элемент, 
выделенный из потока:
public String toString();
   Приложение StreamToken
   В приложении StreamToken мы демонстрируем использование класса 
StreamTokenizer для разбора входного потока.
   Вначале приложение запрашивает у пользователя строку для разбора, записывая 
ее в файл. Затем этот файл открывается для чтения буферизованным потоком и 
разбирается на составные элементы. Каждый такой элемент выводится в отдельной 
строке, как это показано на рис. 2.6.

Рис. 2.6. Разбор входного потока в приложении StreamToken
   Обратите внимание, что в процессе разбора значение 3.14 было воспринято как 
числовое, а 3,14 - нет. Это потому, что при настройке разборщика мы указали, 
что символ ‘.’ является обычным.
   Исходный текст приложения
   Исходный текст приложения StreamToken представлен в листинге 2.5.
Листинг 2.5. Файл StreamToken\StreamToken.java
// =========================================================
// Разбор входного потока при помощи класса 
// StreamTokenizer 
//
// (C) Фролов А.В, 1997
//
// E-mail: [email protected]
// WWW:    http://www.glasnet.ru/~frolov
//            или
//         http://www.dials.ccas.ru/frolov
// =========================================================
import java.io.*;

// =========================================================
// Класс StreamToken
// Главный класс приложения
// =========================================================
public class StreamToken
{
  // -------------------------------------------------------
  // main
  // Метод, получающий управление при запуске приложения
  // -------------------------------------------------------
  public static void main(String args[])
  {
    // Выходной поток
    DataOutputStream OutStream;

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

    // Массив для ввода строки с клавиатуры
    byte bKbdInput[] = new byte[256];

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

    try
    {
      // Выводим строку приглашения
      System.out.println("Enter string to parse...");
      
      // Читаем с клавиатуры строку для записи в файл
      System.in.read(bKbdInput);

      // Преобразуем введенные символы в строку типа String
      sOut = new String(bKbdInput, 0);
    
      // Создаем выходной буферизованный поток данных
      OutStream = new DataOutputStream(
        new BufferedOutputStream(
          new FileOutputStream("output.txt")));

      // Записываем строку sOut в выходной поток
      OutStream.writeBytes(sOut);

      // Закрываем выходной поток
      OutStream.close();

      // Создаем входной буферизованный поток данных
      InStream = new DataInputStream(
        new BufferedInputStream(
          new FileInputStream("output.txt")));

      // Создаем объект для разбора потока
      TokenizerOfStream tos = new TokenizerOfStream();

      // Выполняем разбор
      tos.TokenizeIt(InStream);

      // Закрываем входной поток
      InStream.close();

      System.out.println("Press  to terminate...");
      System.in.read(bKbdInput);
    }
    catch(Exception ioe)
    {
      System.out.println(ioe.toString());
    }
  }
}

// =========================================================
// Класс TokenizerOfStream
// Класс для разбора входного потока
// ============================================
 
<<-[Весь Текст]
Страница: из 275
 <<-