- ボビン
- 常連さん
- 会議室デビュー日: 2007/02/05
- 投稿数: 45
|
投稿日時: 2008-02-26 12:00
こんにちは、StreamReaderでtxtファイルを読んだ後、
closeしてdisposeしているのですが、フォームを開いている間は
そのtxtファイルを開こうとすると、
「このファイルを書き込み許可で開くことができませんでした。」
というメッセージが表示されます。
まだつかんだままのようですが、なぜでしょうか?
ソースは以下のようにしました。
コード: |
|
Dim sr As StreamReader
Try
sr = New StreamReader(sDataPath, Encoding.GetEncoding(932))
Try
' 読み込みできる文字がなくなるまで繰り返す
While (sr.Peek() >= 0)
' ファイルを 1 行ずつ読み込む
sData = sr.ReadLine()
' 〜処理〜
End While
Finally
If Not sr Is Nothing Then
sr.Close()
End If
End Try
Finally
If Not sr Is Nothing Then
Dim hDisposable As IDisposable = sr
hDisposable.Dispose()
End If
End Try
|
色々と調べてみましたが、解決できず投稿しました。
VB2005です。よろしくお願いします。
|
- まどか
- ぬし
- 会議室デビュー日: 2005/09/06
- 投稿数: 372
- お住まい・勤務地: ますのすし管区
|
投稿日時: 2008-02-26 12:14
・そのファイルへの書き込み権限の無いユーザーで実行している。
・そのファイルが読み取り専用属性になっている。
とか。
Usingステートメントをお勧めします。
#Tryでなければ表現できない場合もありますが。
あと、IsNot演算子ってのもあります。
|
- ボビン
- 常連さん
- 会議室デビュー日: 2007/02/05
- 投稿数: 45
|
投稿日時: 2008-02-26 12:57
まどかさん、ご返答ありがとうございます。
>・そのファイルへの書き込み権限の無いユーザーで実行している。
>・そのファイルが読み取り専用属性になっている。
この二点については、確認しました。
また、txtファイルを読むフォームを閉じれば、メッセージは出なくなり
通常通り開けるようになります。
Usingステートメントも試してみます。
|
- まどか
- ぬし
- 会議室デビュー日: 2005/09/06
- 投稿数: 372
- お住まい・勤務地: ますのすし管区
|
投稿日時: 2008-02-26 13:07
下記のコードで問題なく動作しました。
コード: |
|
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim r As IO.StreamReader = Nothing
Try
r = New IO.StreamReader("c:\temp\test.txt")
Do While Not r.EndOfStream
r.ReadLine()
Loop
r.Close()
Catch ex As Exception
Finally
r.Dispose()
End Try
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim w As New IO.StreamWriter("c:\temp.test.txt", True)
w.Close()
w.Dispose()
End Sub
|
どこか他の場所で開いているということはないのでしょうか?
|
- ボビン
- 常連さん
- 会議室デビュー日: 2007/02/05
- 投稿数: 45
|
投稿日時: 2008-02-26 13:13
>どこか他の場所で開いているということはないのでしょうか?
申し訳ありません!
ご指摘の通り、他の場所で開いていました。
txtファイルの内容をチェックする処理が別の場所にあり
そちらでcloseがされていませんでした。
お手数をおかけしてすみませんでした。
まどかさん、ご返答ありがとうございました。
|