首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.IO.FileShare有限制吗?

System.IO.FileShare有限制吗?
EN

Stack Overflow用户
提问于 2011-08-05 11:50:56
回答 6查看 2K关注 0票数 6

我想要建立我自己的平面文件数据库。下面是如何访问平面文件数据库

代码语言:javascript
复制
Dim fs As New System.IO.FileStream("C:\MyDb.txt", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
Dim sr As New System.IO.StreamReader(fs)

在处理文件时,.Net是否对使用System.IO.FileShare.ReadSystem.IO.FileShare.WriteSystem.IO.FileShare.ReadWrite施加了限制?

我的意思是,.Net能够支持成千上万的用户使用文件流流读取器对象来并发访问单个文件吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-10-07 09:43:43

我不知道.NET/windows的确切限制,所以我为您创建了一个真正的测试。我运行了下面的测试代码几分钟,我发现,直到635908计数的system.io.fileshare使用,它仍然可以使用,也就是说,您仍然可以读取平面数据库文件的内容。

下面是代码(它是一个winform应用程序,.Net 4):

代码语言:javascript
复制
Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim filepath As String = "c:\database.txt"

        Dim filestream As System.IO.FileStream

        Dim count As Int32

        For count = 0 To System.Int32.MaxValue
            filestream = New System.IO.FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read)
            AppendLog(count, filestream.ReadByte)
        Next
    End Sub

    Private LogFilepath As String = "C:\LogInfo.txt"
    Private Enter As String = Chr(13) & Chr(10)
    Private Space As String = " "

    Private Sub AppendLog(ByVal Sequence As Int32, ByVal info As Byte)
        System.IO.File.AppendAllText(LogFilepath, Enter & Sequence & Space & CStr(info))
    End Sub

End Class
票数 2
EN

Stack Overflow用户

发布于 2011-08-05 12:03:55

如果您试图打开具有冲突的访问权限和共享权限的文件,它将无法工作。但是,如果这是一个自定义数据库,为什么需要打开多个文件句柄?您的自定义数据库软件应该管理打开的句柄(每个文件有一个)。至于您的具体问题,没有设置限制,但随后打开的文件需要遵循访问和共享权限的规则。

http://msdn.microsoft.com/en-us/library/aa363874%28v=vs.85%29.aspx

票数 4
EN

Stack Overflow用户

发布于 2011-08-05 12:03:38

FileShare成员意味着其他文件也可以打开该文件。这并不保证以任何方式同步数据--这意味着多个程序现在可以在打开文件时从该文件中读取(因为这是您设置的-- FileShare.Read)。

如果您使用ReadWrite,那么多个程序可以从文件中读取和写入文件。同样,如果发生任何更改,将通知而不是。如果多个程序与流同时写入同一个文件,则数据将混合在一起,您将得到一个损坏的文件。(损坏意味着您和其他程序都无法对其进行反编译,因为您的数据与您朋友的应用程序交织在一起)。

对读取文件的并发程序的数量没有不合理的限制。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6955792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档