環境はVB.2003 です。
前回、ファイルをダウンロードして抽出後、テキストに保存する方法を
教えていただきました。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200510/05100016.txt
'抽出されたリンク情報をテキストボックスに表示
Dim fsk As FileStream = New FileStream("c:\urllist.txt", FileMode.Open)
Dim fsw As StreamWriter = New StreamWriter(fsk)
fsw.WriteLine(url)
fsw.close()
を追加してテキストにURLを追加することはできたのですが、このままだと
URLリストの最後(http://aaaaaa3)しか保存されませんでした。
URLリストは
http://aaaaaa1
http://aaaaaa2
http://aaaaaa3
とあるので全部保存したいのですがうまいうまくいきません。
自分なりに工夫して
Dim fsk As FileStream = New FileStream("c:\urllist" & i &".txt", 'iはループごとに1増える
FileMode.OpenOrCreate)
Dim fsw As StreamWriter = New StreamWriter(fsk)
fsw.WriteLine(url)
fsw.close()
でリストを全部保存することには成功したのですが、これだとファイルがどんどん増えてしまいます。
ひとつのファイルにまとめて保存する方法がわからないのでよろしくお願いします。
前回、無事解決という表現はすみませんでした。
躓いたところから一歩進めたのでここから先は自分で解決してみようと
解決ボタンを押しました。
すみません。
見づらいので、とりあえず発言。
一度 StreamWriter を開いたら開きっぱなしで
WriteLine メソッドをループさせれば追加で
書込みできません?。
…で、最後に閉じる。
レスありがとうございます。
Nextの次の行にfsw.close()と記入してみたところ
C:\Documents and Settings\うい\デスクトップ\Cトレ\mawaruvb\Form1.vb(154) : error BC30451: 名前 'fsw' は宣言されていません。
とでました。
ループ後ということなのでNextの次へ書き込んでみたのですが場所が
まずかったのでしょうか。
一応ループ内ならfsw.と打った瞬間に選択肢がたくさん出るんですが・・。
>>"c:\urllist" & i &".txt"
数値と文字列が混在してますが.Netってこんなんアリなんですね・・・
あー勝手にiが数値だと思い込んでましたが、違ってたらスンマセン
一応この状態で動かすとループするたびに
urllist0.txt
urllist1.txt
のようにどんどんテキストファイルができます。
iはループ回数なんで数字だったと思います。
なんか変数のスコープについて全く理解されていないようですね。
ソース丸写しもいいですが、急がずもう少し基礎から始めてみてはどうですか?
For文の中で宣言したオブジェクト変数はForの外では使えないです。
If分の中で宣言したオブジェクト変数はIf文の外では使えないです。
>Dim fsk As FileStream = New FileStream("c:\urllist.txt", FileMode.Open)
>Dim fsw As StreamWriter = New StreamWriter(fsk)
をForの前で宣言して下さい。
なぜそうしたら動くのかを調べてください。
基本的にFor〜NextでループならForの前で宣言してNextの後で閉じれば普通に動くと思うけど、何故ループ中に宣言してるのかを質問者に問いたい
最初にまるるうさんが言ってたのもこのことですよ
あと、
>>iはループ回数なんで数字だったと思います。
って・・・ご自身のプログラムですよね?大丈夫ですか?
レスありがとうございます。
まるるうさん、通ってみたさんありがとうございます。
For〜Nextループ内での宣言は見本にかいてあったのでそのまま使ってしまいました。
グローバル変数だとかよくわからなかったんですが、今回のことで宣言する場所が大切だと身を持って知りました。
>って・・・ご自身のプログラムですよね?大丈夫ですか?
初めて作るプログラムなので動かないからちょっと弱気だったりします。
無事、ひとつのテキストファイルに複数のリストを保存することができました。
ありがとうございます。
ツイート | ![]() |