- ベストアンサー
ファイルの作成からその使用に際して
VB2008Expressでプログラミング中です。 早速ですが、この度ボタンを押すと3種の.txtファイルを作成し、ある文字列をそこに保存する、といったプログラムが必要になったのですが不具合がでて困っています。 sub createfile() IO.file.create("d:\1.txt") IO.file.create("d:\2.txt") IO.file.create("d:\3.txt") end sub private sub button_click()handles button1.click call createfile() Dim Writer As New IO.StreamWriter("d:\1.txt") Writer.WriteLine(Richtextbox1.Text) Writer.Close() Dim Writer As New IO.StreamWriter("d:\2.txt") Writer.WriteLine(Richtextbox2.Text) Writer.Close() Dim Writer As New IO.StreamWriter("d:\3.txt") Writer.WriteLine(Richtextbox3.Text) Writer.Close() end sub といった感じでファイルを作成したらそこにテキストを保存するようにしたいのですが、「ファイルが使用中でアクセスできません」とエラーになります。 いろんなサイトで勉強してみたのですが、いまいち理由がわかりません。どなたか教えていただける方はいませんでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
IO.file.create("d:\1.txt") IO.file.create("d:\2.txt") IO.file.create("d:\3.txt") この処理でファイルが閉じられていないからです。 IO.File.Create() メソッドは FileStream オブジェクトを返すので、それを使って Close() メソッドを書きましょう。 そんでもって更に Using ステートメントを使ってオブジェクトの破棄を保証させましょう。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call CreateFile() Using writer As New IO.StreamWriter("d:\hoge1.txt") writer.WriteLine(RichTextBox1.Text) writer.Close() End Using Using writer As New IO.StreamWriter("d:\hoge2.txt") writer.WriteLine(RichTextBox2.Text) writer.Close() End Using Using writer As New IO.StreamWriter("d:\hoge3.txt") writer.WriteLine(RichTextBox3.Text) writer.Close() End Using End Sub Private Sub CreateFile() Using fs As IO.FileStream = IO.File.Create("d:\hoge1.txt") If Not (fs Is Nothing) Then fs.Close() End If End Using Using fs As IO.FileStream = IO.File.Create("d:\hoge2.txt") If Not (fs Is Nothing) Then fs.Close() End If End Using Using fs As IO.FileStream = IO.File.Create("d:\hoge3.txt") If Not (fs Is Nothing) Then fs.Close() End If End Using End Sub
その他の回答 (1)
- n-jun
- ベストアンサー率33% (959/2873)
'Call createfile() Dim Writer1 As New IO.StreamWriter("d:\1.txt") Writer1.WriteLine("aaa") Writer1.Close() Dim Writer2 As New IO.StreamWriter("d:\2.txt") Writer2.WriteLine("bbb") Writer2.Close() Dim Writer3 As New IO.StreamWriter("d:\3.txt") Writer3.WriteLine("ccc") Writer3.Close() Dim Writer の変数名を分けて、 call createfile() をコメントにしたら出来ました。 IO.file.create でテキストファイルを作成しているのに、 As New IO.StreamWriter で同じファイル名のテキストファイルを作成しようとしたためでは? と思います。
お礼
ありがとうございます^^