Scannerクラス


導入


クラスは、Javaのバージョン1.5.0でjava.utilパッケージに浮上しています

このクラスは、強力で便利な読み取りを可能にするために、再生ストリームとシームレスに統合します!


使用

メーカーをしてみましょう:
スキャナ(ファイルソース)スキャナ(ファイルソース、ストリングたcharsetName)スキャナ(入力ストリームのソース)スキャナ(入力ストリームソースストリングたcharsetName)スキャナ(読み取り可能源)スキャナ(ReadableByteChannel源)スキャナ(ReadableByteChannelソースストリングたcharsetName)スキャナ(文字列のソース)

このクラスは、我々はすぐにいくつかが何かを読んでいることを実現しました!

実験を試してみましょう?。

私たちは、スキャナ(のInputStreamソース)を参照してください そして、私たちはSystemクラスにその中の変数があることを知っているキーボードを読み取ることができます:
内のpublic static finalのInputStreamザ・ "標準" 入力ストリーム。このストリームは既に開いていると、入力データを提供する準備ができています。通常、このストリームはキーボード入力に対応する、またはホスト環境やユーザによって指定された別の入力ソースを口コミ。

なぜありませんか?のは、このqu'écrisのユーザーを表示する少し愚かなプログラムを試してみましょう:

インポートjava.util.Scanner;パブリッククラスTest {公共の静的な無効メイン(文字列の引数*){スキャナSC =新しいスキャナ(System.in)。文字列s = "";(s.compareTo(しばらく"[OK]")!= 0){S = sc.nextLine()。System.out.println(S);}}}

それが動作ミラクル!単純な右?

今私はあなたについて知らないが、多くのことを私を驚かせたコンストラクタは、スキャナ(文字列)でした

のは、利用可能な方法で何かを試してみましょう:

インポートjava.util.Scanner;パブリッククラスTest {公共の静的な無効メイン(文字列の引数*){文字列s = "トーマス・サンチェス16";スキャナSC =新しいスキャナ(S)。System.out.printlnは("FIRSTNAME: " Sc.next +()+ "\ Nnom: " Sc.next +()+ "\水泳: " + Sc.nextInt())。}}
クールな右?

StringTokenizerは今何ですか?私はほとんどこのクラスは、よく私の意見で置き換えることが誇張ません!

さて、このクラスはよさそうだが、それはそのようなファイルを読み取るための驚異を行いますか!

試してみましょう:

インポートのjava.io.File;輸入java.io.FileNotFoundException。インポートjava.util.Scanner;パブリッククラスTest {公共の静的な無効メイン(文字列の引数*){スキャナSC;{試しますSC =新しいスキャナ(新しいファイル("essai.txt"));しばらく(sc.hasNext())System.out.println(sc.nextLine())。}キャッチ(にFileNotFoundException電子){e.printStackTrace();}}}

そして、ファイルが読み込まれ、ここでホップ!

私はすべての実行可能なだからここに私自身のソースに触発された2クラスを使用してお見せするためにちょっとそれは長い時間がかかることがあります:

com.daedric.netパッケージ;輸入java.io. *;輸入java.net。*;インポートjava.util.Scanner;パブリッククラス接続{民間のInputStreamで。民間のPrintWriterアウト。民間のOutputStream OUTSTREAM。プライベートスキャナSC;公共ソケット靴下;パブリック接続(ソケットi)はIOExceptionが{スロー靴下= I;=でsock.getInputStream();OUTSTREAM sock.getOutputStream =();アウト=新しいPrintWriter(OUTSTREAM、真の);SC =新しいスキャナ(に);}公共ボイドフラッシュ()は{IOExceptionがスローされますgetOutputStream()フラッシュ()。this.out.flush();}公共のInputStreamのgetInputStream(){見返りに、}公共のOutputStreamのgetOutputStream(){OUTSTREAM返します。}getPrintWriterStream公共のPrintWriter(){アウト返します。}getScanパブリックスキャナ(){SCを返します。}getSockパブリックソケット(){靴下を返します。}公共ボイドsendMes(オブジェクトメス){this.out.println(MSG)。this.out.flush();}公共ボイドsendObj(オブジェクトメス){{試しますObjectOutputStreamのアウト=新しいObjectOutputStreamの(のgetOutputStream());out.writeObject(MSG)。out.flush();}キャッチ(IOExceptionを電子){// TODO自動生成されたcatchブロックe.printStackTrace();}最後に、{}}公共ボイドsetSock(ソケット靴下){this.sock =靴下。}パブリック文字列のtoString(){リターン "" + Sock.getInetAddress()。}パブリックブールがある(文字列のIP){ストリングLocalIP this.toString =();//三項演算子を生きますip.compareToを返す(LocalIP = localIp.indexOf( '/') > 0? LocalIP.Substring(localIp.indexOf( '/')+ 1):LocalIP)== 0。}//すべての接続を閉じます公共ボイド近いです(){{試しますthis.flush();()this.getInputStream()があります。()this.getOutputStream()があります。()this.getSock()があります。}キャッチ(IOExceptionを電子){// TODO自動生成されたcatchブロックe.printStackTrace();}}}

それはできるだけ簡単な方法でソケットと対話している場合、クラス

私はこのようになりますThreadクラスでこれを結合さ:


パブリッククラスは、Thread {MReadingThreadを拡張しますプライベート接続C;プライベートベクトルVECT =新しいベクトル();公共MReadingThread(コネクションC){this.c = C。}ます。public void実行(){スキャナSC = c.getScan()。{(;;)のために文字列s = sc.nextLine()。System.out.printlnは("受信サーバ===>" + S)。もし(s.length() > 0){int型の記号=新しいスキャナ(S).nextInt();// System.out.printlnは("=署名 " +記号)。スイッチ(記号){P://私はあなたにいくつかのコードページをepergne}}}}}


単純な右?あなたは、ファイルを読み込むと思います!加えて、それは方法スキャナまたはブロッキングようです!何が良いかもしれ?

ここでScannerクラスの可能性の提示があります。

私はちょうど私たちが使うことができるものであなたを示し、どのように少し洞察まし周りされていません。

あなたが必要な場合の詳細は、Javadocを参照してください。

私はそれを改善することができますので、詳細について、ご質問、非難のために、賞賛は、コメントを残します。
Scannerクラスこの記事(PDF)をダウンロード sheorogath投稿者。 」と題されたこの文書 由来Scannerクラス」コード・ソース (Codes-sources.commentcamarche.net)クリエイティブ・コモンズのライセンスの下で利用できるようになります。あなたはライセンスの定める条件の下で、このページのコピーを変更、コピーすることができ、このノートとして明確に表示されます。この記事をダウンロードする(PDF