การใช้ class java.util.Scanner ใน java 5.0 ตอนที่ 2

ครั้งนี้จะเป็นตัวอย่างในการใช้ delimeter ในการอ่านข้อมูลโดยใช้ Scanner

โดยเราสามารถกำหนด delimeter เข้าไปใน Scanner ได้โดย method useDelimeter(String reg)

ตัวอย่างที่ 1

private static void readFile(String fileName) {
try {
Scanner scanner = new Scanner(new File(fileName));
scanner.useDelimiter
(System.getProperty("line.separator"));
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
scanner.close();
} catch (Exception e) {
e.printStackTrace();
}
}

เป็นตัวอย่างของการอ่านข้อมูลไปจนกว่าจะจบบรรทัดนั้นๆ ครับ หรออาจจะกำหนด delimeter ใหม่เป็น

scanner.useDelimiter("\r\n|\n");

ก็ได้นะครับ ซึ่ง paatern ของ java regular expression นั้นสามารถดูใน javadoc ได้ครับ

ต่อไปเป็นตัวอย่างของการอ่านข้อมูลจาก webpage ครับ

import java.net.URL;
   import java.net.URLConnection;
   import java.io.IOException;
   import java.util.Scanner;

   public class WebPageScanner {
     public static void main(String[] args) {
       try {
         URLConnection connection =
           new URL("http://java.net").openConnection();
         String text = new Scanner(
           connection.getInputStream()).
           useDelimiter("\\Z").next();
       } catch (IOException e) {
         e.printStackTrace();
       }
     }
   }

จาก code นี้จะสังเกตุเห็นว่า userDelimeter(\\Z); นั้นเป็น regular expression ที่หมายถึง

\Z The end of the input but for the final terminator, ifany หรืออาจจะเปลี่ยนเป็น

\A The beginning of the input

ก็ได้นะครับ ซึ่งดูได้ใน javadoc ครับ

และที่สำคัญตัวอย่างนี้จะเห็นว่าจะสรางตัว scanner จาก inputsteam ซึ่งเราเขียน code เพียงบรรทัดเดียวเท่านั้นซึ่งตรงนี้แหละครับเป็นข้อดีมากๆ เนื่องจากถ้าเราทำใน java version ก่อนหน้านี้เราจะต้องเขียน code ดังนี้ครับ

InputStream source = new URL("http://pat.net/misc/foo.txt").openStream();
BufferedReader br = new BufferedReader( new InputStreamReader( source ) );
StringBuffer text = new StringBuffer();
for ( String line; (line = br.readLine()) ! = null )
    text.append( line );

ซึ่งจะเห็นได้ว่าสั้นและง่ายขึ้นมากจริงๆ ครับ

ดังนั้นผมลองเอามาใช้แทนในตัวอย่างแรกเลยครับ จะเป็นอย่างไรครับ

String text = new Scanner( new File("testdata.txt") ).useDelimiter("\\Z").next();
System.out.println(text);

จะเห็นได้ว่า Scanner นี้ทำให้ชีวิตเราง่ายขึ้นเยอะครับ แต่ก็ต้องลองใช้กันดูอีกครับ เผื่อว่าใครจะมี idea ในการใช้งานที่ดีกว่านี้อีกครับ

ตอนต่อไปของเรื่อง Scanner กับ regular expression เพิ่มเติมจากตอนนี้ครับ .....

Comment

Comment:

Tweet

Holyoak juicy couture said louis vuitton,louis vuitton canada,louis vuitton outlet,louis vuitton outlet online beachings swarovski jewelry of polo ralph lauren juvenile salmon converse pas cher sharks air max aren't common, but louboutin,christian louboutin,louboutin shoes,louboutins,louboutin uk,christian louboutin uk,red bottom shoes,red bottoms,louboutin outlet,christian louboutin shoes,christian louboutin outlet they're not instyler ionic styler,instyler unusual on nike free,free running,nike free run,nike free 5.0,free running 2,nike running shoes,nike free trainer,nike free trainer 5.0,free runs,free run 5.0 the Oregon coach outlet,coach factory,coach factory outlet,coach outlet store,coach outlet store online,coach factory online,coach factory outlet online,coach outlet online coast. "Most of michael kors canada the burberry outlet online,burberry outlet,burberry,burberry handbags,burberry factory outlet,burberry sale time when oakley sunglasses cheap,cheap oakley sunglasses,oakley sunglasses,oakley vault,oakleys,oakley.com,sunglasses outlet,cheap oakley,oakley outlet,cheap sunglasses,oakley prescription glasses,fake oakleys,oakley sunglasses outlet,oakley glasses,oakley store,fake oakley,oakley sale,cheap oakleys,discount oakley sunglasses people moncler jackets see them on the beach, they've already swarovski uk died," oakley he nike free,free run,nike free run,nike free pas cher,nike free run pas cher,nike free france said.

 

Thankfully, hollister,hollister canada,abercrombie and fitch,abercrombie,abercrombie and,abercrombie kids,af he sac louis vuitton,louis vuitton,louis vuitton pas cher,sac louis vuitton pas cher,louis vuitton france was able burberry outlet online,burberry,burberry outlet,burberry handbags,burberry factory outlet,burberry sale to valentino shoes,valentino,valentinos get to nike blazer this shark before it cheap oakley was longchamp,longchamp bags,longchamp uk too late.Back louis vuitton outlet stores,louis vuitton outlet online,louis vuitton,louis vuitton outlet,louisvuitton.com,authentic louis vuitton,louis vuitton factory outlet,cheap louis vuitton in mcm handbags,mcm bags,mcm backpack,mcm outlet August 2012, karen millen dresses Alan Holyoak ugg,ugg australia,uggs,ugg pas cher,ugg soldes,bottes ugg,bottes ugg pas cher went to Seaside, Oregon, true religion for ray ban sunglasses uk his ray ban sunglasses,ray ban sunglasses outlet,ray ban,rayban,ray bans,ray ban outlet,ray-ban,raybans,ray ban wayfarer,ray-ban sunglasses,raybans.com,rayban sunglasses,cheap ray ban niece's wedding. He never expected that he'd sac longchamp,longchamp,longchamps,longchamp pas cher,sac longchamp pas cher,longchamp pliage,longchamp soldes,sac longchamps,longchamp france come back kate spade handbags,kate spade,kate spade outlet,katespade a hero.

 

Holyoak has a background canada goose outlet in iphone 6s cases marine ferragamo shoes,ferragamo,salvatore ferragamo,ferragamo belts,ferragamo belt,ferragamo outlet biology moncler and louis vuitton,louis vuitton bags,louis vuitton handbags,louis vuitton uk teaches at Brigham celine handbags,celine bag,celine bags Young ugg,ugg australia,ugg italia University. gucci Returning prada outlet,prada,prada handbags,prada sunglasses,prada shoes,prada bags from herve leger,herve leger dresses an lancel early converse shoes,converse,converse.com,converse sneakers,converse outlet walk lululemon outlet,lululemon,yoga pants,lulu lemon,lulu.com,lululemon.com one morning, moncler he and giuseppe zanotti his louis vuitton,louis vuitton outlet online,louis vuitton outlet,louisvuitton.com,authentic louis vuitton,louis vuitton factory outlet,cheap louis vuitton wife ugg boots,uggs,ugg,ugg boots uk,ugg uk saw abercr