开发者

detecting/preventing error/deadlock when opening/reading text file

I am reading file with text contents on it.

sample dictionary.txt contents:

    aa
    abaca
    abroad
    apple

Snippet A:

Dim path as String = Server.MapPath("dictionary.txt");
Dim dictionary() as String = {}
Try
{
    dictionary = File.ReadAllLines(path)
}
Catch ex as Exception

End Try

Snippet B:

Dim path a开发者_如何学运维s String = Server.MapPath("dictionary.txt");
Dim dictionary As New List(Of String)
Using  fs As FileStream = New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
    Using sr As StreamReader = New StreamReader(fs)
        While Not sr.EndOfStream
            dictionary.Add(sr.ReadLine().Trim())
        End While
    End Using
End Using

In Snippet A, I seldom encounter an an error "File is used by another process". In Snippet B, I haven't encounter the same error yet.

Basically, I want to make sure that I can handle/prevent this error. Does Snippet B, solves the problem, if not is there other way so that I can prevent this error.

BTW, this a web application and I am expecting multiple users.


The second sample is more robust towards this problem, but not perfect. If the file is opened exclusively, or locked by an external process this will still fail. Unfortunately, thats just a fact of life on windows systems. It is possible to avoid this by using low level api calls, but the above method is generally sufficient in most normal cases.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜