자바에서는 StreamTokenizer 수업이 에 있습니다. java.io 패키지 . 입력 스트림을 다음과 같은 작은 덩어리로 나누어 구문 분석하는 데 사용됩니다. 토큰 이러한 토큰을 사용하면 처리가 더 쉬워집니다. 토큰은 단어, 숫자 또는 특정 기호일 수 있습니다. Stream Tokenizer는 숫자로 묶인 문자열과 다양한 주석 스타일을 인식할 수 있습니다.
StreamTokenizer 클래스의 기능:
StreamTokenizer 클래스의 주요 기능은 다음과 같습니다.
- 입력 스트림을 기호 단어 및 숫자와 같은 토큰으로 나눕니다.
- 추적 라인 번호를 지원합니다.
- 줄 끝 문자를 토큰으로 처리할 수 있습니다.
- 또한 단어 토큰을 자동으로 소문자로 변환할 수도 있습니다.
StreamTokenizer 클래스 선언
StreamTokenizer 클래스의 선언은 다음과 같습니다.
공개 클래스 StreamTokenizer는 객체 구현을 확장하고 직렬화 가능합니다.
메모: Object를 확장하고 Serialized를 구현합니다.
StreamTokenizer 클래스의 생성자
이 클래스는 두 개의 생성자로 구성되어 있으며 이를 통해 이 클래스의 객체를 다양한 방법으로 만들 수 있습니다. 이 클래스에서 사용할 수 있는 생성자는 다음과 같습니다.
1. StreamTokenizer(InputStream은): 이 생성자는 더 이상 사용되지 않음 . 이는 바이트 스트림에서 직접 토크나이저를 생성하는 오래된 방법입니다.
통사론:
StreamTokenizer(InputStream은)
메모: 이는 문자가 아닌 바이트에서 작동하므로 권장되지 않습니다.
2. StreamTokenizer(리더 r): 이것은 텍스트를 적절하게 처리하는 문자 스트림을 사용하는 토크나이저를 만드는 가장 좋은 방법입니다.
통사론:
StreamTokenizer(리더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(부울 플래그) | 줄 끝 문자가 중요한 토큰으로 처리되는지 여부를 결정합니다. 실제 줄 끝 문자가 토큰으로 반환되는 경우. |
| 보통문자(int ch) | ch 문자가 단어 번호나 주석 문자가 아닌 일반 문자로 처리되도록 지정합니다. |
| 다음토큰() | 입력 스트림에서 다음 토큰을 구문 분석하고 해당 유형을 반환합니다. |
| lowerCaseMode() | 단어 토큰을 자동으로 소문자로 변환할지 여부를 결정합니다. |
| 보통문자() | ch 문자가 일반 문자로 처리되도록 지정합니다. |
| 보통문자() | 낮은 범위에서 높은 범위의 모든 문자가 일반 문자로 처리되도록 지정합니다. |
이제 각 방법에 대해 하나씩 자세히 설명하겠습니다.
1. commentChar(): 이 방법은 문자를 지정하는 데 사용됩니다. 채널 이는 한 줄 주석에서 시작하며 이 문자부터 줄 끝까지의 모든 문자는 StreamTokenizer에서 인식되지 않습니다.
통사론:
공개 무효 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 파일을 만듭니다.
Programmers 1 2 3 Geeks 안녕하세요 프로그램이 여기에 설명되어 있습니다.
2. 라인(): 이 메서드는 StreamTokenizer가 처리하는 현재 줄 번호를 반환합니다. 이 방법은 프로그램 디버그 처리가 어떻게 작동하는지 확인하고 토큰화하는 동안 줄 번호를 추적할 수도 있을 때 매우 유용합니다.
자식 리베이스
통사론:
공개 정수 리넨()
- 매개변수: 이 메서드는 매개변수를 사용하지 않습니다.
- 반환 유형: 이 메서드는 현재 입력 스트림의 줄 번호를 int 값으로 반환합니다.
예:
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(): 이 메서드는 현재 스트림 토큰을 토큰 값과 현재 사용 중인 줄 번호로 나타내는 문자열을 반환합니다.
통사론:
공개 문자열 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. eolIsignificant(): 이 메소드는 아무것도 반환하지 않지만 EOL(End of Line) 문자를 토큰화해야 하는지 확인하는 데 사용됩니다. 플래그가 true이면 각 줄 끝 문자는 토큰으로 처리되고 토큰 유형 TT_EOL이 할당됩니다. eol 문자는 무시되고 공백으로 처리됩니다.
통사론:
공개 무효 eolIsSignificant(부울 플래그)
- 매개변수: 이 방법은 부울을 사용합니다. 깃발 이것이 true이면 줄 끝 문자가 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명 괴짜 3명을 위한 2
5. nextToken(): 이 메서드는 입력 스트림에서 다음 토큰을 읽고 유형을 반환합니다. 토큰 유형은 다음 위치에 저장됩니다. 유형 필드. TT_WORD TT_NUMBER 및 TT_EOL 등이 될 수 있는 정수 값으로 유형을 반환합니다.
통사론:
공개 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(): 이 방법은 부울을 사용합니다. 깃발 값을 확인하고 토큰이 자동으로 소문자로 변환되어야 하는지 확인합니다. 플래그가 true이면 토큰의 모든 단어가 소문자로 변환됩니다. 그렇지 않으면 토큰이 그대로 설정되어 변환을 원하지 않습니다.
통사론:
네트워크 및 네트워크 유형
공개 무효 lowerCaseMode(부울 플래그)
- 매개변수: 부울이 필요합니다. 깃발 값. true이면 모든 토큰이 소문자로 변환되고, false이면 변환되지 않습니다.
- 반환 유형: 이 메서드는 아무것도 반환하지 않습니다.
예:
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()에 관한 것입니다.
7. 보통Char(): 이 메서드는 int 값을 사용합니다. 채널 문자로 취급해야 합니다. 이 방법을 사용하면 다음과 같은 질병을 치료할 수 있습니다. 성격 에이 숫자 단어나 공백과 같은 특수 문자로 사용됩니다.
통사론:
공공 무효 일반 Char(int ch)
- 매개변수: 이 메서드는 단일 int를 사용합니다. 채널 문자로 처리되는 값입니다.
- 반환 유형: 이 메서드는 아무것도 반환하지 않습니다.
예:
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'를 제거합니다.
8. 보통문자(): 이 메소드는 낮은 것부터 높은 것까지(포함) 범위의 모든 문자가 일반 문자로 처리되고 이 메소드를 호출한 후에는 해당 문자가 더 이상 특수 문자로 처리되지 않도록 지정합니다.
통사론:
public void 보통Chars(int low int high)
- 매개변수: 이 메서드는 두 개의 정수 값을 사용합니다. 낮은 그리고 높은 ( 포함) 특수 문자로 변환되는 문자의 범위입니다.
- 반환 유형: 이 메서드는 아무것도 반환하지 않습니다.
예:
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 파일을 만듭니다.
안녕하세요 Geeks 이것은 보통의 Chars()에 관한 것입니다.
StreamTokenizer를 사용하여 텍스트 파일 토큰화
StreamTokenizer 클래스는 텍스트 파일을 토큰화하는 데에도 사용되며 여기서는 Tokenizer 클래스 메서드의 메서드를 사용하고 있습니다.
1단계: 먼저 다음을 사용하여 텍스트 파일을 만듭니다. .txt 동일한 루트 디렉토리에 확장자를 추가합니다. 여기서는 이름으로 만들었습니다. 긱스.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의 Java.io.StreamTokenizer 클래스 | 세트 2