<テキストファイルからデータを読む> こんにちは、Ken3です。 今回は、 テキスト、ファイルからの読み込みをやってみたいと思います。 あまり期待しないでね。 /* * 1.書き込みが出来たら、読み込み処理でしょ */ 書き込みが出来たら、読み込み処理でしょ、 って、安易な流れで、今日は、読み込み処理をやってみます。 test008.txt ( http://www.ken3.org/cgi-bin/test/test008.txt ) に時刻と評価が下記のように書かれています。 2002/12/05 8:11:04 , 満足 2002/12/05 8:14:12 , 普通 2002/12/05 15:53:28 , 満足 ・ ・ ・ 2002/12/07 15:36:54 , 満足 2002/12/07 15:56:49 , 満足 2002/12/07 15:57:22 , 不正なパラメーターです このデータを読み込んで、画面に表示したいと思います。 ほんと、安易ですね、芸が無いよね?面白くない、読者さん達も同じ意見でしょ? まぁ、まぁ、 初めは簡単にね。 なんてキレの無いいつもの前置きは置いといて。続きをどうぞ。 /* * 2.一行読み込み .ReadLine */ いつものサンプル先出しから行きます。 --- <%@LANGUAGE=VBScript%> <html> <head> <title>.ReadLine テキストファイルから1行データを読み込む</title> </head> <body> <h2>.ReadLine テキストファイルから1行データを読み込む</h2> test010-1.asp<br> <hr> <% '*1 FileSystemObjectを生成します、、って英文、そのままジャン。 Set objFS = Server.CreateObject("Scripting.FileSystemObject") '*2 test008.txt を読取専用モードで開く Set ts = objFS.OpenTextFile(Server.MapPath("test008.txt"), 1, True) '*3ファイルからデータを一行を読む strDATA = ts.ReadLine '*4使ったファイルは閉じようよ ts.close '*5読み込んだデータを表示します(strDATA) Response.Write strDATA %> <hr> 終了です<br> <A HREF="test008.txt">元データtest008.txtを見る</A><br> </body> </html> --- ポイントは、 '*2 test008.txt を読取専用モードで開く Set ts = objFS.OpenTextFile(Server.MapPath("test008.txt"), 1, True) ↑ここで、読み取りモードの1でテキストファイルを開きます 次に、 '*3ファイルからデータを一行を読む strDATA = ts.ReadLine の.ReadLineでデータを一行読み込み、 変数strDATAに代入してます。 その変数を単純に、Response.Writeで表示しただけです。 http://www.ken3.org/cgi-bin/test/test010-1.asp のサンプルを実行すると、 一行目の 2002/12/05 8:11:04 , 満足 が無事に表示されます。 へぇ〜、だから何? そんな一行読んでも、ツマラナイし、使えないジャン。 そうですよね。 で、次に出てくるのが、 ファイルの最後までデータを表示ですよね。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /* * 3..AtEndOfStream でファイルの終端をチェックする */ 先頭行の読み込みは、無事に出来ました。 今度は、ファイルの最後までデータを読みたいので、 ループを使って、ファイルを最後まで読んでみたいと思います。 さて、ファイルが最後か?判断は?どうしましょうかねぇ。。 人間はスゴイね、目で上から読んで行って、最後がわかるんだもん。 まぁ、そんなくだらないこと言ってないで、 .AtEndOfStream ってのがあって、 ファイルの終わりに達すると、Trueになる(Trueを返す) 逆に、ファイルの終わりじゃ無い時は、 Falseなので、 次のようなループを作ってみました。 --- <%@LANGUAGE=VBScript%> <html> <head> <title>.AtEndOfStream でファイルの終端をチェックする</title> </head> <body> <h2>.AtEndOfStream でファイルの終端をチェックする</h2> test010-2.asp<br> <hr> <% ' FileSystemObjectを生成します、、って英文、そのままジャン。 Set objFS = Server.CreateObject("Scripting.FileSystemObject") ' test008.txt を読取専用モードで開く Set ts = objFS.OpenTextFile(Server.MapPath("test008.txt"), 1, True) Do While ts.AtEndOfStream = False '*6ファイルの終端になってない間ループ strDATA = ts.ReadLine 'ファイルからデータを一行を読む Response.Write strDATA '読み込んだデータを表示 Response.Write "<BR>" '改行のタグを入れる Loop ts.close '使ったファイルは閉じようよ %> <hr> 終了です<br> <A HREF="test008.txt">元データtest008.txtを見る</A><br> </body> </html> --- http://www.ken3.org/cgi-bin/test/test010-2.asp でサンプル実行可能です。 ポイントのループの作りは、 Do While ts.AtEndOfStream = False '*6ファイルの終端になってない間ループ で、 ts.AtEndOfStream が False の間、ループを実行します。 strDATA = ts.ReadLine 'ファイルからデータを一行を読む Response.Write strDATA '読み込んだデータを表示 上2行で、読み込み、表示をやってます。 もちろん、Response.Write ts.ReadLine と変数経由じゃなくてもOKです。 Response.Write "<BR>" '改行のタグを入れる これが無いと(笑)、改行されてデータが表示されません(初めしくじりました私) Loop ↑ループの先頭に戻ります。 /* * 4..ReadAll で ファイルを全て読む */ あと、読み込みのメソッドで、 .ReadAll ってのがあって、 ファイルを一度に全て読む そんなこともできます。 お約束の注意事項では、 メモリを一度に消費するので、 大きなファイルを読み込むのはやめましょうかな。 三流君の前置きはいいから、使い方は?簡単なのかよ? そっちのほうが知りたいよ。 では、下記サンプルです。 --- <%@LANGUAGE=VBScript%> <html> <head> <title>.ReadAll で ファイルを全て読む</title> </head> <body> <h2>.ReadAll で ファイルを全て読む</h2> test010-3.asp<br> <hr> <% ' FileSystemObjectを生成します、、って英文、そのままジャン。 Set objFS = Server.CreateObject("Scripting.FileSystemObject") ' test008.txt を読取専用モードで開く Set ts = objFS.OpenTextFile(Server.MapPath("test008.txt"), 1, True) strDATA = ts.ReadAll '*7 .ReadAllでファイルを全て変数へ Response.Write "<PRE>" '<PRE>のタグでそのまま表示する Response.Write strDATA '読み込んだ全てのデータを表示 Response.Write "</PRE>" '<PRE>タグ終了 ts.close '使ったファイルは閉じようよ %> <hr> 終了です<br> <A HREF="test008.txt">元データtest008.txtを見る</A><br> </body> </html> --- http://www.ken3.org/cgi-bin/test/test010-3.asp でサンプル実行可能です。 使い方は、簡単で、 strDATA = ts.ReadAll '*7 .ReadAllでファイルを全て変数へ みたいにすると、ファイルのデータを全て読み込んで変数に代入されます。 短いファイルの時は、使ってみると、少し楽できるかもしれません。 /* * 5.終わりの挨拶 */ 今回は、ファイルからの読み込み処理で、 .ReadLine 一行読み込み .AtEndOfStream ファイルの終端チェック .ReadAll 一度に全データを読み込む を使用してみました。 まぁなんとなく、わかったような、わからなかったような。 まだまだ、道のりは遠いなぁ〜 またね(笑) 何か質問・感想があったら、気軽に、 メール、掲示板に書き込んでくださいね。 三流プログラマーのKen3でした。
ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、
感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]
まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。
次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません
広告:
DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く
VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]