使用c#的filestream会导致文件重写,如何不使用streamwriter进行文件续写
时间: 2024-09-16 11:05:43 浏览: 45
在C#中,如果你想要使用FileStream进行非追加模式(如覆盖或替换原有内容)的操作而避免直接写入整个文件,你可以采用以下步骤:
1. **打开流**:首先创建一个FileStream实例,指定`FileMode.Open`或`FileMode.CreateNew`作为模式,而不是默认的`FileMode.OpenOrCreate`(这会尝试打开并如果不存在就创建文件)。
```csharp
using (FileStream fileStream = new FileStream("example.txt", FileMode.Create))
{
// ...
}
```
2. **定位到末尾**:如果你想在文件末尾开始写入,可以先将流的位置设置为文件长度。如果没有读取文件,需要先获取当前文件大小。
```csharp
long fileSize;
if (!fileStream.Length.TryGetValue(out fileSize)) // 获取文件长度
{
fileSize = 0; // 或者初始化其他合适的方式
}
fileStream.Seek(fileSize, SeekOrigin.End); // 移动到文件末尾
```
3. **写入数据**:然后你可以使用FileStream的Write方法向文件添加新数据。
```csharp
byte[] data = Encoding.UTF8.GetBytes("新的内容");
fileStream.Write(data, 0, data.Length);
```
4. **关闭流**:最后别忘了关闭FileStream,释放资源。
```csharp
fileStream.Close();
```
阅读全文