C# 了解File.Create和File.Write中的文件流

C# 了解File.Create和File.Write中的文件流,c#,filestream,C#,Filestream,我无法理解为什么我需要处理文件。在访问文件并写入之前,请创建或将创建内容包装在使用工作站中。为什么我需要处理流类的实例,该类已初始化文件。Create并必须创建另一个流实例才能写入?它们是在不同的线程上,为什么 为什么创建、文本写入和删除不能共享同一个流?也许我只是不懂流 例如: File.Create(...); File.ReadLine(...); <-- The process cannot access the file ... because it is being used

我无法理解为什么我需要处理文件。在访问文件并写入之前,请创建或将创建内容包装在使用工作站中。为什么我需要处理类的实例,该类已初始化文件。Create并必须创建另一个实例才能写入?它们是在不同的线程上,为什么

为什么创建、文本写入和删除不能共享同一个流?也许我只是不懂流

例如:

File.Create(...);
File.ReadLine(...); <-- The process cannot access the file ... because it is being used by another process

using (File.Create(...)) {};
File.ReadLine(...); <-- OK
File.Create(…);
ReadLine(…) 请参见MSDN(重点矿山)页面上的备注部分:

此方法创建的FileStream对象具有默认FileShare 无价值;其他进程或代码无法访问创建的文件 直到原始文件句柄关闭

请参见MSDN(重点矿山)页面上的备注部分:

此方法创建的FileStream对象具有默认FileShare 无价值;其他进程或代码无法访问创建的文件 直到原始文件句柄关闭


也许我不明白,但您可以在写入、读取等操作中共享同一个流实例。您也不需要在使用中包装流—您可以在使用后手动处理。Dispose是为了防止内存问题,它本身甚至不是100%必需的,因为如果不Dispose,程序仍将编译并运行。也许你可以分享一些特定的代码来概括你的问题。
File.ReadLine(…)
是错误的。没有这样的事情它是
File.ReadLines(…)
,你可以尝试类似
var fs=File.Create(…);fs.Dispose();ReadLines(…)是。我想知道为什么fs.Dispose()-这是个问题。也许我不明白,但您可以在写入、读取等之间共享同一个流实例。您也不需要在使用中包装流-您可以在使用后手动进行处理。Dispose是为了防止内存问题,它本身甚至不是100%必需的,因为如果不Dispose,程序仍将编译并运行。也许你可以分享一些特定的代码来概括你的问题。
File.ReadLine(…)
是错误的。没有这样的事情它是
File.ReadLines(…)
,你可以尝试类似
var fs=File.Create(…);fs.Dispose();ReadLines(…)是。我想知道为什么fs.Dispose()-这就是问题所在。