<テキストファイルからデータを読む>
こんにちは、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記事 バックナンバー目次]