2015年12月5日土曜日

P011-ネットのテキストを読み込む

今日の目標→

ネットから画像が読み込めたら、次はテキストの読み込みだろう。

●MyLibの拡張

ネット上の日本語テキストって、ほぼUTF-8に統一されたのかな? でもやっぱり、今でも文字コードの判別は避けて通れないだろうなあ。 昔作った文字コード判定クラスがあるので、これを流用しよう。

というわけで、次のクラスをMyLibライブラリに追加する。

おそらく世の中にはもっと優秀なライブラリがあるだろうが、まあ自作のコードは愛着があるよね。 コードを入力し終えたらコンパイルして、「MyLibV03.dll」というファイル名で保存する。

●プログラム本体

  1. NetJob2という名前で、プロジェクトを作成する
  2. ソリューションエクスプローラの「参照」で、MyLibV03.dllの参照を追加する
  3. Form1.csを開き、次のコードを入力する

プログラムを起動し、テキストファイルのURLを入力して「テキストを読み込む」ボタンを押すと、上部のテキストボックスに内容が表示される。

テキストとは言うけどプレーンテキストだけじゃなくて、HTMLファイルも、RSSフィードも、中身は文字だけなのでこのプログラムで表示できる。

●要点の解説

WebClientクラスを利用してネットからデータを読み出すのは、画像の場合と同じだ。

ちょっと違うのは、前回はReadOpen()メソッドを利用しネットデータをストリーム形式でオープンしたが、今回はDownloadData()メソッドを利用して全データを一気にbyte配列に取得したことだ。メモリが少なかった昔はこういう大名プログラムは書かなかったが、時代は変わったのだ。

っていうか今考えたら、画像データもこのDownloadData()メソッドで取得すればよかったじゃない。そうすればストリームを閉じるの閉じないので、エラーが起きることもなかった…かもしれない。

取得した生のデータは、先ほどのMyLibライブラリのEncodingCheckerで文字コードを調べる。ちなみに使い方は、

Encoding enc = EncodingChecker.GetEncoding(バイト配列);

とすれば指定したバイト配列のエンコードを推測し、Encoding型の結果をencに入れる。あとは通常のEncoding.GetString()メソッドにより、適切な方法でstring型に変換可能だ。

0 件のコメント:

コメントを投稿