.net - FileStream和StreamWriter-写入后如何截断文件的其余部分?

标签 .net io filestream streamwriter

var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
    writer.Write(....);

如果文件先前包含的文本和新编写的文本比文件中已有的文本短,那么我如何确保文件中的过时尾随内容被截断?

请注意,在这种情况下,不能以截断模式打开文件。当我收到FileStream对象时,该文件已经打开。上面的代码只是为了说明流的属性。

编辑

扩展下面的答案,解决方案是:
var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
{
    writer.Write(....);
    writer.Flush();
    fs.SetLength(fs.Position);
}

最佳答案

使用 SetLength 设置文件的新长度-文件应被截断。

参见this answer的相关问题。

关于.net - FileStream和StreamWriter-写入后如何截断文件的其余部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8464261/

相关文章:

c++ - 在 g++ 和 msvc 中使用 ifstream 读取文件的差异

java - 读取不同行的文件并存储到变量中

.net - 当 Sql Server 中的数据发生更改时,有没有办法在 .NET 中收到通知?喜欢一个事件吗?

.net - 类中的 let 绑定(bind)中的显式类型参数

python - 顺序或并行 : what is the proper way to read multiple files in python?

java - 暂时禁用窗口的鼠标输入

c# - .Net 等同于 JSP?

c# - Word应用类问题

java - 创建最近删除的文件时出现 AccessDeniedException

sql-server - 创建表在创建时引发 TextImage 错误