連載:VB 6ユーザーのための
|
|
|
サンプル・プログラム12 − ファイルに追加書き込みするには
ファイルにデータを書き込む方法にもさまざまなバリエーションがあるが、ここでは、追加書き込みのコードを見てみることとする。入力ファイルはこれまで使ってきたattend.logをそのまま使い、この中から、指定した学生番号を含む行の第2フィールドだけを取り出し、attend.outファイルに書き込むものとする。
例えば、「01234567」という学生番号を入力し、[検索]ボタンをクリックすると、図5のようになる。
図5 行とフィールドを切り出して別のファイルに出力する |
フィールドの区切りはカンマ。指定された学生番号と第1フィールドが等しい行の、第2フィールドだけを出力する。 |
まずは入力から見てみよう。これはStreamReaderクラスのオブジェクトを使い、ファイルから1行ずつデータを読み出して、文字列処理によってフィールドごとに分けるという方法でも構わないが、フィールドごとの処理ができるFileIO.TextFieldParserというクラスがあるので、それを利用すると簡単になる。
|
このクラスでは、SetDelimiterメソッドを使って、フィールドの区切り文字を指定することができ、ReadFieldsメソッドを使って、1行のデータを読み込み、フィールドを文字列の配列として返すことができる。従って、入力のためのコードは以下のようになる。取りあえず、ファイルへの出力は後で考えることとして、デバッグ・ウィンドウに出力してみよう。
| |||||||||||||||
リスト4 指定された学生番号を含む行の第2フィールドだけを取り出すためのコード | |||||||||||||||
|
TextFieldParserクラスのEndOfDataプロパティは、ファイルの末尾に達したかどうかではなく、ファイルの末尾の前に空白行やコメント行(CommnetTokensプロパティに設定した文字列で始まる行)だけがある行に達したらTrueになることに注意。また、配列のインデックスは0から始まるので、第1フィールドはoneLine(0)のように配列の0番目の文字列となっていることにも注意しよう。
では、次に、ファイルに書き込むためのコードを追加してみよう。ストリームへの書き込みはStreamWriterクラスのオブジェクトを使い、1行のデータを書き込むにはWriteLineメソッドが使えるので、以下のようになる。
| |||||||||
リスト5 指定された学生番号を含む行の第2フィールドだけをファイルに出力するためのコード | |||||||||
|
結び − エラー処理も重要
ファイル回りの処理では、ファイルが存在しなかったり、フィールドの形式が期待していたものと違ったりと、何かとエラーが発生することが多い。最後に示したコードでは、Try 〜 Catch 〜 End Tryステートメントを使った、幾分おおざっぱなエラー処理を入れておいたが、実際のプログラムでは、そのあたりについても十分に考慮する必要があるだろう。
エラー処理についてはこの連載の第4回で説明しているのでそちらも参照されるといいだろう
INDEX | ||
連載:VB 6ユーザーのためのこれならマスターできるVB 2005超入門 | ||
第8回 ファイル入出力をマスターしよう | ||
1.サンプル・プログラム10 − テキスト・ファイルの検索プログラム | ||
2.テキスト・ファイルからデータを読み出せるようにするには | ||
3.サンプル・プログラム11 − ランダム・アクセスでデータを読み出すには | ||
4.サンプル・プログラム12 − ファイルに追加書き込みするには | ||
「これならマスターできるVB 2005超入門」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -