|
.NET TIPS テキスト・ファイルの内容を簡単かつ効率的に読み込むには?[4以降、C#、VB]デジタルアドバンテージ 遠藤 孝信2010/05/13 |
![]() |
|
|
|
「TIPS:テキスト・ファイルの内容を簡単に読み込むには?」では、Fileクラス(System.IO名前空間)のReadAllLinesメソッドにより、テキスト・ファイルの内容を配列に読み込む方法を紹介しているが、このメソッドは全行を1度に読み込むため、巨大なテキスト・ファイルでは呼び出し時に時間がかかる。
このため、先頭から1行ずつ処理したいような場合には、「TIPS:テキスト・ファイルの内容を読み込むには?」の後半で紹介しているように、StreamReaderクラス(System.IO名前空間)などを使用する必要があった。
FileクラスのReadLinesメソッド
.NET Framework 4では、Fileクラスに新しくReadLinesメソッドが追加されている。
このメソッドも、引数に指定したテキスト・ファイルを1行ずつ読み込むためのものだが、メソッドの呼び出し時にはファイルを読み込まない。代わりに列挙子オブジェクトを返し、その列挙時(反復処理時)に1行ずつ読み込むため、行単位の作業を効率よく記述できる。
以下にReadLinesメソッドの記述例を示す。これは、テキスト・ファイルを1行ずつ読み込み、それを画面に表示する。
| ||
| ReadLinesメソッドを使用したサンプル・プログラム(上:C#、下:VB) |
このように、ReadLinesメソッドの戻り値はIEnumerable<string>クラス(VBではIEnumerable(Of String)と記述)*のオブジェクトとなる。このため、実際に各行を読み込むためには、foreach文(VBではFor Each文)を使用することになる(あるいはLINQのデータソースとして利用できる)。
| * System.Collections.Generic名前空間のジェネリック・クラスである、IEnumerable<T>クラス(VBではIEnumerable(Of T)と記述)をString型に適用したクラス。 |
UTF-8以外の文字コードのファイルを使用する場合には、ReadLinesメソッドの第2引数で、ファイルの文字コードに該当するEncodingオブジェクト(System.Text名前空間)を指定する。
次のサンプル・プログラムではシフトJISのファイルを処理している。
| ||
| ReadLinesメソッドによるシフトJISファイルの読み込み(上:C#、下:VB) |
こちらのサンプル・プログラムでは、ReadLinesメソッド呼び出しをforeach文(For Each文)に埋め込んでいる。このため列挙子オブジェクトを明示的には宣言していない。![]()
| 利用可能バージョン:.NET Framework 4以降 カテゴリ:クラス・ライブラリ 処理対象:テキスト・ファイル 使用ライブラリ:Fileクラス(System.IO名前空間 使用ライブラリ:StreamReaderクラス(System.IO名前空間) 使用ライブラリ:IEnumerable<T>クラス(System.Collections.Generic名前空間) 関連TIPS:テキスト・ファイルの内容を簡単に読み込むには? 関連TIPS:テキスト・ファイルの内容を読み込むには? |
|
||||||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


