Class Java StreamTokenizer - סט 1

Class Java StreamTokenizer - סט 1

ב-Java ה StreamTokenizer הכיתה נוכחת ב חבילת java.io . הוא משמש לניתוח זרם קלט על ידי פירוקו לנתחים קטנים הידועים בשם אסימונים אסימונים אלה מקלים על העיבוד. אסימון יכול להיות מילה מספר או כל סמל ספציפי. Stream Tokenizer יכול לזהות מחרוזות מצוטטות של מספרים וסגנונות הערות שונים.

תכונות של מחלקת StreamTokenizer:

תכונות המפתח של מחלקת StreamTokenizer מפורטות להלן:

  • זה מפרק את זרמי הקלט לאסימונים כמו סמלים מילים ומספרים.
  • הוא תומך במספרי קו מעקב.
  • זה יכול להתייחס לתווים מסוף השורה כאל אסימונים.
  • זה גם יכול להמיר אסימוני מילים לאותיות קטנות באופן אוטומטי.

הצהרת StreamTokenizer Class

ההצהרה של מחלקת StreamTokenizer היא:

מחלקה ציבורית StreamTokenizer מרחיבה את האובייקט מיישם 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(דגל בוליאני)

קובע אם תווי סוף השורה יטופלו כאסימונים משמעותיים. אם תווי סוף שורה אמיתיים מוחזרים כאסימונים.

ordinaryChar(int ch) מציין שהתו ch יטופל כתו רגיל ולא כאל מספר מילה או תו הערה.
nextToken() מנתח את האסימון הבא מזרם הקלט ומחזיר את הסוג שלו.
lowerCaseMode() קובע אם אסימוני מילים יומרו אוטומטית לאותיות קטנות.
ordinaryChar() מציין שהתו ch יטופל כתו רגיל.
ordinaryChars() מציין שכל התווים בטווח הנמוך לגבוה יטופלו כתווים רגילים.


כעת נדון בפירוט על כל שיטה בזה אחר זה:


1. commentChar(): שיטה זו משמשת לציון התו ch שמתחיל בהערה של שורה בודדת וכל התווים מהתו הזה ועד סוף השורה אינם מזוהים על ידי StreamTokenizer.

תַחבִּיר:

public void commentChar(int ch)

  • פָּרָמֶטֶר: שיטה זו לוקחת ערך שלם בודד 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()

  • פָּרָמֶטֶר: שיטה זו אינה לוקחת שום פרמטר.
  • סוג החזרה: שיטה זו מחזירה ערך 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(): שיטה זו מחזירה מחרוזת המייצגת את אסימון הזרם הנוכחי עם ערך האסימון ומספר השורה שבו הוא משתמש כעת.

תַחבִּיר:

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 (End of Line) צריך להיות אסימון. אם הדגל נכון אז כל תו של סוף שורה מטופל כאל אסימון ומוקצה לסוג האסימון TT_EOL שמתעלמים מהתו eol יטופלו כרווח לבן.

תַחבִּיר:

ריק ציבורי eolIsSignificant(דגל בוליאני)

  • פָּרָמֶטֶר: שיטה זו לוקחת בוליאן דֶגֶל אם זה נכון, תו סוף השורה יטופל כאל אסימון או יתעלם ממנו כרווח לבן.
  • סוג החזרה: השיטה הזו לא מחזירה כלום.

דוּגמָה:

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()

  • פָּרָמֶטֶר: שיטה זו אינה לוקחת שום פרמטר.
  • סוג החזרה: שיטה זו מחזירה את int הערך של סוג האסימון.

דוּגמָה:

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 על השימוש בשיטת 3 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()


7. ordinaryChar(): שיטה זו לוקחת ערך int ch צריך להתייחס כאל דמות. באמצעות שיטה זו נוכל לטפל בא אוֹפִי א כתו מיוחד כמו מילת מספר או רווח לבן.

תַחבִּיר:

public void ordinaryChar(int ch)

  • פָּרָמֶטֶר: שיטה זו לוקחת אינט בודד 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 אודות ordinaryChar() בשיטה זו הסירו 's' מכל הזרם


8. ordinaryChars(): שיטה זו מציינת שכל התווים בטווח מהנמוך לגבוה (כולל) יטופלו כתווים רגילים ולאחר קריאה לשיטה זו, התווים לא יטופלו עוד כאל תווים מיוחדים.

תַחבִּיר:

public void ordinaryChars (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 עם התוכן הבא שרשום להלן:

שלום חנונים זה על רגילים Chars()


שימוש ב-StreamTokenizer כדי לסמל קובץ טקסט

המחלקה של StreamTokenizer משמשת גם ל-Tokenization של קובץ הטקסט וכאן אנו משתמשים בשיטות של שיטות מחלקות Tokenizer.

שלב 1: ראשית צור קובץ טקסט עם .txt הרחבה באותה ספריית שורש. כאן יצרנו אותו עם השם Geeks.txt .

קובץ טקסט



שלב 2: כעת צור קובץ ג'אווה וכתוב את הקוד כדי לסמל את נתוני הטקסט הקיימים בקובץ הטקסט.

קובץ 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  ;             }         }         }      }      

תְפוּקָה:

פלט דוגמה


מבנה תיקיות:

מבנה תיקיות


המאמר הבא  –  Class Java.io.StreamTokenizer ב-Java | סט 2

צור חידון