Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以同时将多个FileStream对象创建到一个文件中吗?_C#_Filestream - Fatal编程技术网

C# 我可以同时将多个FileStream对象创建到一个文件中吗?

C# 我可以同时将多个FileStream对象创建到一个文件中吗?,c#,filestream,C#,Filestream,为什么在fs2对象抛出错误??我已经在fs对象中编写了FileShare.ReadWrite FileStream fs = new FileStream("hello.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.ReadWrite); mama(); Console.ReadKey(); } static void mama() { F

为什么在fs2对象抛出错误??我已经在fs对象中编写了FileShare.ReadWrite

     FileStream fs = new FileStream("hello.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.ReadWrite);

        mama();

        Console.ReadKey();

    }
    static void mama()
    {
        FileStream fs2 = new FileStream("hello.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
        fs2.Read(new byte[3], 0, 3);
    }
有人能告诉我为什么会有这样的错误吗

错误=进程无法访问文件“C:\Users\iP\documents\visual studio 2015\Projects\ConsoleApplication32\ConsoleApplication32\bin\Debug\hello.txt”,因为另一个进程正在使用该文件。

,因为您的代码从未关闭该文件,并且具有打开的句柄

如果可以,请始终使用
using
语句,它将
flush
close
文件

using(var fs = new FileStream(...))
{
    // do stuff here
} // this is where the file gets flushed and closed
如果两个方法在同一个文件上工作,请在中传递
FileStream

static void mama(FileStream fs )
{
    fs .Read(new byte[3], 0, 3);
}

您得到该错误是因为您正在将
FileShare.None
传递给第二个调用。如果将其更改为
FileShare.ReadWrite
以匹配第一个调用,则不会出现此问题

这是因为
FileStream
构造函数在下面调用,如果您查看该函数的文档,它会声明:

您不能请求与访问模式冲突的共享模式 在具有打开句柄的现有请求中指定的。 CreateFile将失败,GetLastError函数将返回 错误\u共享\u违规

您已经使用
FileAccess.ReadWrite
作为访问模式打开了第一个请求的句柄,这与第二个调用中的
FileShare.None
冲突