在C#中读取流时出错

时间:2014-08-17 18:30:22

标签: c# .net mono

在我的应用中,我试图从文件系统中读取一个流。 这是我的方法:

public Stream ReadStream (string path)
    {
        return new FileStream (path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
    }

此方法有时有效,但大多数情况下它会引发以下异常:

Sharing violation on path /data/data/MyPath/11.png 
at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] in <filename unknown>:0 
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share) [0x00000] in <filename unknown>:0 
你能帮帮我吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

FileShare.None表示如果系统上的其他内容在同一文件上打开了文件句柄,您将无法打开该流。这也意味着只要您的句柄处于打开状态,其他进程就无法打开文件。

解决方案取决于您的需求,但您可以将其更改为FileShare.Read以禁止其他进程同时在文件中写入,但仍允许他们打开它进行阅读。 / p>

并且,查看您的函数名称,我猜您可以将其替换为File.OpenRead

编辑:刚刚注意到你的问题是关于单声道的,我不确定我在这里所说的是否成立。