请教个关于使用StreamWriter覆盖文件的问题

finalsyo 2016-07-20 10:32:56
我希望能够覆盖文件中指定位置指定长度的内容,而不是全文件覆盖,例如文件开头的前4个字符,请问如何实现?
...全文
429 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
对于 Stream(包括 FileStream)随机位置存取,你应该使用 Position 属性指定位置。
finalsyo 2016-07-20
  • 打赏
  • 举报
回复
引用 7 楼 Forty2 的回复:
[quote=引用 6 楼 finalsyo 的回复:] 看起来没有方法支持替换是吗? 文件大的话只是写也很花时间
可以替换。但是,不能用你标题下的StreamWriter。 用FileStream。用FileMode.Open方式。
using (FileStream fs = new FileStream("c:\\temp\\a.txt", FileMode.Open))
{
    fs.Write(new byte[] { 32, 32, 32, 32 }, 0, 4);
}
[/quote] 好的 我去试试
Forty2 2016-07-20
  • 打赏
  • 举报
回复
引用 6 楼 finalsyo 的回复:
看起来没有方法支持替换是吗? 文件大的话只是写也很花时间
可以替换。但是,不能用你标题下的StreamWriter。 用FileStream。用FileMode.Open方式。
using (FileStream fs = new FileStream("c:\\temp\\a.txt", FileMode.Open))
{
    fs.Write(new byte[] { 32, 32, 32, 32 }, 0, 4);
}
finalsyo 2016-07-20
  • 打赏
  • 举报
回复
看起来没有方法支持替换是吗? 文件大的话只是写也很花时间
  • 打赏
  • 举报
回复
引用 2 楼 finalsyo 的回复:
[quote=引用 1 楼 Libby1984 的回复:] 读取文件内容到一个字符串string,然后按照你的想法修改这个string,最后重新将这个字符串的内容写入到文件覆盖以前的内容即可
文件比较大,修改的比较频繁,对速率有要求[/quote] 当然你也可以使用Stream的Seek函数试试,读估计可以,但是写我没试过。仅提供个思路。
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/310195232 你看看这个吧,其实现在电脑的内存都比较大,如果几百兆的东西,感觉不是问题
  • 打赏
  • 举报
回复
引用 2 楼 finalsyo 的回复:
[quote=引用 1 楼 Libby1984 的回复:] 读取文件内容到一个字符串string,然后按照你的想法修改这个string,最后重新将这个字符串的内容写入到文件覆盖以前的内容即可
文件比较大,修改的比较频繁,对速率有要求[/quote] 那你就在内存中保存一个文件内容的副本,也就是上面提到的string,这样就不用每次都要读文件了,只读一次,每次都修改string,然后写文件。
finalsyo 2016-07-20
  • 打赏
  • 举报
回复
引用 1 楼 Libby1984 的回复:
读取文件内容到一个字符串string,然后按照你的想法修改这个string,最后重新将这个字符串的内容写入到文件覆盖以前的内容即可
文件比较大,修改的比较频繁,对速率有要求
  • 打赏
  • 举报
回复
读取文件内容到一个字符串string,然后按照你的想法修改这个string,最后重新将这个字符串的内容写入到文件覆盖以前的内容即可

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧