На Java StreamTokenizer клас присутній в пакет java.io . Він використовується для аналізу вхідного потоку шляхом розбиття його на невеликі фрагменти, відомі як жетони ці маркери полегшують обробку. Токеном може бути слово, число або будь-який конкретний символ. Stream Tokenizer може розпізнавати числа в лапках і різні стилі коментарів.
Особливості класу StreamTokenizer:
Основні функції класу StreamTokenizer перераховані нижче:
- Він розбиває вхідні потоки на маркери, такі як символи, слова та числа.
- Він підтримує відстеження номерів рядків.
- Він може розглядати символи кінця рядка як маркери.
- Він також може автоматично перетворювати лексеми слів на малі літери.
Оголошення класу StreamTokenizer
Оголошення класу StreamTokenizer таке:
публічний клас StreamTokenizer розширює Object, реалізує Serializable
Примітка: Він розширює Object і реалізує Serializable.
Конструктори класу StreamTokenizer
Цей клас складається з двох конструкторів, за допомогою яких ми можемо створювати об’єкти цього класу різними способами. У цьому класі доступні такі конструктори:
1. StreamTokenizer (InputStream це): Цей конструктор є застарілий . Це старіший спосіб створення токенізера безпосередньо з потоку байтів.
Синтаксис:
StreamTokenizer (InputStream є)
Примітка: Це не рекомендується, оскільки воно працює з байтами, а не з символами.
2. StreamTokenizer (Reader r): Це найкращий спосіб створити токенізер, він використовує потік символів, який правильно обробляє текст.
Синтаксис:
StreamTokenizer (Reader r)
приклад:
Java// Demonstrating the working // of StreamTokenizer(Reader r) import java.io.*; public class Geeks { public static void main(String[] args) throws IOException { Reader r = new StringReader('Hello 123'); StreamTokenizer t = new StreamTokenizer(r); int token; while ((token = t.nextToken()) != StreamTokenizer.TT_EOF) { if (token == StreamTokenizer.TT_WORD) { System.out.println('Word: ' + t.sval); } else if (token == StreamTokenizer.TT_NUMBER) { System.out.println('Number: ' + t.nval); } } } }
Вихід
Word: Hello Number: 123.0
Методи Java StreamTokenizer
Таблиця нижче демонструє методи цього класу.
| метод | опис |
|---|---|
| commentChar() | Вказує, що символ ch починає однорядковий коментар. Усі символи від символу коментаря до кінця рядка ігноруються. |
| лінія() | Повертає поточний номер рядка вхідного потоку. |
| toString() | Повертає рядкове представлення поточного маркера потоку та номер рядка, у якому він зустрічається. |
eolIsSignificant(логічний прапор) | Визначає, чи розглядаються символи кінця рядка як значущі маркери. Якщо справжні символи кінця рядка повертаються як маркери. колекція java |
| звичайний символ (int ch) | Вказує, що символ ch розглядається як звичайний символ, а не як номер слова чи символ коментаря. |
| nextToken() | Розбирає наступний маркер із вхідного потоку та повертає його тип. |
| нижній регістрMode() | Визначає, чи лексеми слів автоматично перетворюються на малі літери. |
| звичайнийChar() | Вказує, що символ ch розглядається як звичайний символ. |
| звичайнийChars() | Вказує, що всі символи в діапазоні від нижнього до високого розглядаються як звичайні символи. |
Тепер ми докладніше обговоримо кожен метод окремо:
1. commentChar(): Цей метод використовується для визначення символу гл який починається з одного рядкового коментаря, і всі символи від цього символу до кінця рядка не розпізнаються StreamTokenizer.
Синтаксис:
абстрактний клас на java
public void commentChar(int ch)
- Параметр: Цей метод приймає одне ціле значення гл після цього всі символи ігноруються
- Тип повернення: Цей метод нічого не повертає.
приклад:
Java// Demonstrating the working of commentChar() method import java.io.*; public class Geeks { public static void main(String[] args) throws IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); // Use of commentChar() method token.commentChar('a'); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Вихід:
Word : Programmers
Number : 1.0
Number : 2.0
Number : 3.0
Word : Geeks
Word : Hello
Word : a
Word : Program
Word : is
Word : explained
Word : here
Word : my
Word : friends.
Примітка: Ця програма не працюватиме успішно, оскільки файл "ABC.txt" не існує. Якщо ми хочемо протестувати код у системі, нам просто потрібно створити файл з назвою ABC.txt.
Створіть файл ABC.txt із наведеним нижче вмістом:
Програмісти 1 2 3 Виродки Привіт, тут описано програму, друзі.
2. рядок(): Цей метод повертає номер поточного рядка, який обробляється StreamTokenizer. Цей метод дуже корисний, коли ми хочемо перевірити, як працює обробка, налагодити програму, і ми також можемо відстежувати номери рядків під час токенізації.
Синтаксис:
public int linen()
- Параметр: Цей метод не приймає жодних параметрів.
- Тип повернення: Цей метод повертає ціле значення номера рядка поточного вхідного потоку.
приклад:
Java// Demonstrating the use of lineno() method import java.io.*; public class Geeks { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); token.eolIsSignificant(true); // Use of lineno() method // to get current line no. System.out.println('Line Number:' + token.lineno()); token.commentChar('a'); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_EOL: System.out.println(''); System.out.println('Line No. : ' + token.lineno()); break; case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Вихід:
Line Number:1
Word : Progr
Line No. : 2
Number : 1.0
Line No. : 3
Number : 2.0
Line No. : 4
Number : 3.0
Line No. : 5
Word : Geeks
Line No. : 6
Word : Hello
Line No. : 7
Word : This
Word : is
3. toString(): Цей метод повертає рядок, який представляє поточний маркер потоку зі значенням маркера та номером рядка, який він зараз використовує.
Синтаксис:
public String toString()
- Параметр: Цей метод не приймає жодних параметрів.
- Тип повернення: Цей метод повертає рядкове значення, що представляє поточний маркер потоку з номером рядка.
приклад:
Java// Demonstrating the use of toString() method import java.io.*; public class Geeks { public static void main(String[] args) throws IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.toString()); break; } } } }
Вихід:
Word : Token[Programmers] line 1
Number : 1.0
Number : 2.0
Number : 3.0
Word : Token[Geeks] line 5
Word : Token[Hello] line 6
Word : Token[a] line 7
Word : Token[Program] line 7
Word : Token[is] line 7
Word : Token[explained] line 7
Word : Token[here] line 7
Word : Token[my] line 7
Word : Token[friends.] line 7
4. eolIsSignificant(): Цей метод нічого не повертає, але використовується для перевірки того, чи потрібно символ EOL (кінець рядка) токенізувати. Якщо прапорець має значення true, тоді кожен символ кінця рядка розглядається як маркер і йому призначається тип маркера TT_EOL, символ eol ігнорується, розглядається як пробіл.
Синтаксис:
як підключити навушники beats
public void eolIsSignificant(логічний прапор)
- Параметр: Цей метод приймає логічне значення прапор якщо це істина, символ кінця рядка розглядається як маркер a або ігнорується як пробіл.
- Тип повернення: Цей метод нічого не повертає.
приклад:
Java// Demonstrating the use of eolIsSignificant() method import java.io.*; public class Geeks { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); boolean arg = true; // Use of eolIsSignificant() method token.eolIsSignificant(arg); // Here the 'arg' is set true so EOL is treated as a token int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_EOL: System.out.println('End of Line encountered.'); break; case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Вихід:
Number : 1.0
End of Line encountered.
Word : Geeks
End of Line encountered.
Number : 2.0
End of Line encountered.
Word : For
End of Line encountered.
Number : 3.0
End of Line encountered.
Word : Geeks
Примітка: Ця програма не працюватиме успішно, оскільки файл "ABC.txt" не існує. Якщо ми хочемо протестувати код у системі, нам просто потрібно створити файл з назвою ABC.txt.
Створіть файл ABC.txxt із наведеним нижче вмістом:
1 гіки 2 для 3 гіків
5. nextToken(): Цей метод читає наступний маркер із вхідного потоку та повертає тип. Тип маркера зберігається в ttype поле. Він повертає тип як ціле число, яке може бути TT_WORD, TT_NUMBER і TT_EOL тощо.
Синтаксис:
public int nextToken()
- Параметр: Цей метод не приймає жодних параметрів.
- Тип повернення: Цей метод повертає внутр значення типу маркера.
приклад:
Java// Demonstrating the use of nextToken() method import java.io.*; public class Geeks { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); // Use of nextToken() method to parse Next Token from the Input Stream int t = token.nextToken(); while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Вихід:
Word : This
Word : program
Word : tells
Number : 2.0
Word : about
Word : use
Word : of
Number : 3.0
Word : next
Word : token
Word : method
Примітка: Ця програма не працюватиме успішно, оскільки файл "ABC.txt" не існує. Якщо ми хочемо протестувати код у системі, нам просто потрібно створити файл з назвою ABC.txt.
Створіть файл ABC.txt із наведеним нижче вмістом:
1 Ця програма розповідає 2 про використання методу next token().
6. lowerCaseMod(): Цей метод приймає логічне значення прапор значення та перевіряє, чи потрібно маркер автоматично перетворювати на нижній регістр. Якщо прапорець істинний, усі слова маркера перетворюються на малі літери, інакше маркери встановлюються як є й не хочуть їх перетворювати.
Синтаксис:
public void lowerCaseMode(булевий прапор)
- Параметр: Це вимагає логічного значення прапор значення. Якщо воно істинне, то всі маркери перетворюються на малі літери, а якщо хибне, то вони не будуть перетворені.
- Тип повернення: Цей метод нічого не повертає.
приклад:
Java// Demonstrating the use of lowerCaseMode() method import java.io.*; public class NewClass { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); // Use of lowerCaseMode() method to //Here the we have set the Lower Case Mode ON boolean arg = true; token.lowerCaseMode(arg); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Вихід:
Word : hello
Word : geeks
Word : this
Word : is
Word : about
Word : lowercasemode
Примітка: Ця програма не працюватиме успішно, оскільки файл "ABC.txt" не існує. Якщо ми хочемо протестувати код у системі, нам просто потрібно створити файл з назвою ABC.txt.
Створіть файл ABC.txt із наведеним нижче вмістом:
Привіт, гіки, це про LowerCaseMode()
підключення java mysql
7. звичайнийChar(): Цей метод приймає значення int гл слід розглядати як характер. За допомогою цього методу можна лікувати a характер a як спеціальний символ, як-от цифрове слово або пробіл.
Синтаксис:
public void звичайний символ (int ch)
- Параметр: Цей метод бере один інт гл значення, яке буде розглядатися як символ.
- Тип повернення: Цей метод нічого не повертає.
приклад:
Java// Demonstrating the use of ordinaryChar() method import java.io.*; public class Geeks { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); // Use of ordinaryChar() method // Here we have taken 's' as an ordinary character token.ordinaryChar('s'); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Вихід:
Word : Hello
Word : Geek
Word : Thi
Word : I
Word : zz
Word : About
Word : ordinaryChar
Примітка: Ця програма не працюватиме успішно, оскільки файл "ABC.txt" не існує. Якщо ми хочемо протестувати код у системі, нам просто потрібно створити файл з назвою ABC.txt.
Створіть файл ABC.txt із наведеним нижче вмістом:
Hello Geeks Thissss Issszz Про звичайнийChar() Цей метод видаляє «s» з усього потоку
123 фільм
8. звичайнийChars(): Цей метод визначає, що всі символи в діапазоні від низького до високого (включно) розглядатимуться як звичайні символи, і після виклику цього методу символи більше не розглядатимуться як спеціальні символи.
Синтаксис:
public void звичайні символи (int низький int високий)
- Параметр: Цей метод приймає два цілих значення низький і високий ( включно) діапазон символу, який перетворюється на спеціальний символ.
- Тип повернення: Цей метод нічого не повертає.
приклад:
Java// Demonstrating the use of ordinaryChars() method import java.io.*; public class Geeks { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); // Use of ordinaryChars() method // Here we have taken low = 'a' and high = 'c' token.ordinaryChars('a''c'); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Вихід:
Word : Hello
Word : Geeks
Word : This
Word : is
Word : out
Word : ordin
Word : ryCh
Word : rs
Примітка: Ця програма не працюватиме успішно, оскільки файл "ABC.txt" не існує. Якщо ми хочемо протестувати код у системі, нам просто потрібно створити файл з назвою ABC.txt.
Створіть файл ABC.txt із наведеним нижче вмістом:
Hello Geeks Це про звичайнийChars()
Використання StreamTokenizer для токенізації текстового файлу
Клас StreamTokenizer також використовується для токенізації текстового файлу, і тут ми використовуємо методи класу Tokenizer.
крок 1: Спочатку створіть текстовий файл за допомогою .txt розширення в тому самому кореневому каталозі. Ось ми створили його з назвою Geeks.txt .
Крок 2: Тепер створіть файл Java і запишіть код для токенізації текстових даних, наявних у текстовому файлі.
Файл Geeks.java:
Java// Java program to Tokenized the text // file data using StreamTokenizer methods import java.io.*; public class Geeks { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('Geeks.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); // Use of ordinaryChar() method // Here we have taken 's' as an ordinary character token.ordinaryChar('s'); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Вихід:
Структура папки:
Наступна стаття – Клас Java.io.StreamTokenizer у Java | Набір 2