C# FileStream 共享文件
时间: 2023-11-23 08:51:24 浏览: 41
C#的FileStream类可以用于读写文件,同时它也支持共享文件的操作。使用FileStream类操作共享文件需要指定FileShare枚举类型中的参数。
举个例子,如果你想以只读的方式打开一个共享文件,可以使用以下代码:
```
FileStream fs = new FileStream("文件路径", FileMode.Open, FileAccess.Read, FileShare.Read);
```
在这个例子中,FileShare.Read指定了共享方式为只读。
相关问题
C# 写入共享文件
在C#中,你可以使用FileStream类打开一个共享访问的流,以便其他进程也可以访问该文件。你可以指定FileShare枚举以允许其他进程以只读或读写模式访问该文件。
以下是一个写入共享文件的示例代码:
```csharp
using System;
using System.IO;
using System.Text;
class Program
{
static void Main(string[] args)
{
string filePath = "C:\\temp\\myfile.txt";
string data = "Hello, World!";
byte[] bytes = Encoding.UTF8.GetBytes(data);
try
{
using (FileStream fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
{
fileStream.Write(bytes, 0, bytes.Length);
}
}
catch (Exception e)
{
Console.WriteLine("An error occurred: " + e.Message);
}
}
}
```
在上面的示例代码中,我们使用了FileStream类打开了一个名为"myfile.txt"的文件,并指定了FileShare.ReadWrite枚举以允许其他进程以只读或读写模式访问该文件。然后,我们使用Write方法将数据写入到文件中。
需要注意的是,如果其他进程正在读取或写入该文件,你可能无法立即访问该文件。此外,如果你尝试在打开文件的过程中删除该文件,将会抛出一个IOException异常。因此,你应该始终在写入文件之前检查文件是否存在,并且在写入完成后关闭文件流。
C# 读取被占用文件
如果一个文件被其他进程占用,C#程序默认情况下是无法读取该文件的。但是,你可以使用FileShare枚举来打开一个共享访问的流,以便其他进程也可以访问该文件。
以下是一个读取被占用文件的示例代码:
```csharp
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
string filePath = "C:\\temp\\myfile.txt";
try
{
using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (StreamReader reader = new StreamReader(fileStream))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
}
catch (Exception e)
{
Console.WriteLine("An error occurred: " + e.Message);
}
}
}
```
在上面的示例代码中,我们使用了FileStream类打开了一个名为"myfile.txt"的文件,并指定了FileShare.ReadWrite枚举以允许其他进程以只读或读写模式访问该文件。然后,我们使用StreamReader类读取文件的每一行,并将其输出到控制台。
需要注意的是,如果其他进程正在写入该文件,你可能无法读取最新的数据。此外,如果你尝试在打开文件的过程中删除该文件,将会抛出一个IOException异常。因此,你应该始终在读取文件之前检查文件是否存在,并且在读取完成后关闭文件流。