C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: vb2010 テキスト読み込み


(過去ログ 115 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■67993 / inTopicNo.1)  vb2010 テキスト読み込み
  
□投稿者/ たくや (3回)-(2013/09/14(Sat) 12:10:33)

分類:[.NET 全般] 

Vb2010超初心者です。

テキストファイルの3行目のデータを読み込みたいのです。
ネットで検索すると reader.ReadLine を使う方法がありますが、一行づつ読み込む方法しか見当たりません。
単純に3行目のみを読み込む方法はないのでしょうか?


Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Dim reader As System.IO.StreamReader

reader = My.Computer.FileSystem.OpenTextFileReader("D:\test.csv", System.Text.Encoding.Default)

Dim line As String = reader.ReadLine()

End Sub
引用返信 編集キー/
■67995 / inTopicNo.2)  Re[1]: vb2010 テキスト読み込み
□投稿者/ shu (392回)-(2013/09/14(Sat) 12:26:10)
No67993 (たくや さん) に返信

開始位置が分かればダイレクトに途中から読むことも出来ますが、
3行目というのがどこから始まるかはファイル毎に当然ことなります。
1行読むのでさえ改行をさがしながら読むのに3行目をダイレクトに指定することは出来ません。

目的がパフォーマンスならbyte数指定で読込んでメモリー内でエンコードをかけてその文字列から
検索された方がよいです。
引用返信 編集キー/
■67997 / inTopicNo.3)  Re[2]: vb2010 テキスト読み込み
□投稿者/ たくや (5回)-(2013/09/14(Sat) 12:55:12)
ご回答ありがとうございます。

読み込むテキストファイルの3行目には日付のデータがあります。
この日付の何時は変更はないので、この日付を取得したのです。
データ3行目は以下のとおりです。
2012/12/31,20:03,1,福岡,001,0001,1.0000,・・・・・・

ピンポイントでデータを取得したいのですが、難しいのでしょうか。
引用返信 編集キー/
■67998 / inTopicNo.4)  Re[3]: vb2010 テキスト読み込み
□投稿者/ WebSurfer (48回)-(2013/09/14(Sat) 13:57:58)
No67997 (たくや さん) に返信
> ご回答ありがとうございます。
>
> 読み込むテキストファイルの3行目には日付のデータがあります。
> この日付の何時は変更はないので、この日付を取得したのです。
> データ3行目は以下のとおりです。
> 2012/12/31,20:03,1,福岡,001,0001,1.0000,・・・・・・
>
> ピンポイントでデータを取得したいのですが、難しいのでしょうか。

テキストファイルの中身が分かりませんのではっきりしたことは言えませんが、正規表現
を使って抜き出すことは可能ではないかと思います。
引用返信 編集キー/
■67999 / inTopicNo.5)  Re[4]: vb2010 テキスト読み込み
□投稿者/ Hongliang (101回)-(2013/09/14(Sat) 14:59:52)
何十万行目って話ならともかく、3行目なら3回ReadLineして3回目だけ使うって手法で十分だと思います。
取ってきた行をどう解析するかはまた別の話ですが。
引用返信 編集キー/
■68000 / inTopicNo.6)  Re[5]: vb2010 テキスト読み込み
□投稿者/ たくや (6回)-(2013/09/14(Sat) 15:08:57)
ご回答のとおりやってみました。
無事できました。
ありがとうございます。

エクセルマクロのように cells(3,1) みたいにピンポイントでは出来ないんですね。

Dim reader As New IO.StreamReader("D:\test.csv", System.Text.Encoding.Default)
Dim line As String = ""
Dim field() As String

For lineNumer As Integer = 1 To 3
line = reader.ReadLine
Next

reader.Close()

field = line.Split(",")

MsgBox(field(0))
解決済み
引用返信 編集キー/
■68002 / inTopicNo.7)  Re[6]: vb2010 テキスト読み込み
□投稿者/ Azulean (209回)-(2013/09/14(Sat) 18:52:44)
No68000 (たくや さん) に返信
> エクセルマクロのように cells(3,1) みたいにピンポイントでは出来ないんですね。

できません。
ファイルは行・列単位ではなく、バイト(0〜255)という単位で情報を集めて記録されたものです。
今回のデータはの読み込みたい文字列は何バイトあるかが行によって変わります。
そうなると、何バイト目から読みこめばよいか、事前にはわかりません。
(すべての文字列がどの行も同じバイト数で構成されているのであればわかりますが、今回の CSV はその可能性が低いと予想される)


ファイルはどのようにハードディスクに記録されているかといったことを調べたり、CSV ファイルをバイナリエディタと呼ばれるもので開いてみたりすると、理解が深まるかもしれません。
余裕があるときにでも調べてみてください。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -