C# 覆盖/保存当前文件
我正在用 C#、Windows 窗体做编辑器。我希望将文件的“新内容”保存在同一个文件中(通常使用“保存”选项),但我收到 IOException,[该进程无法访问文件“文件名”,因为它正在被另一个进程使用。 我有写入新文件的方法并且它有效。如何使用它来覆盖当前文件。
编辑: 我正在使用二进制编写器 http://msdn.microsoft.com/en-us/library /atxb4f07.aspx
I am doing editor in c#, windows forms. I wish to save 'new content' of file in the same file (usual usage of 'save' option) but I receive IOException, [ the process cannot access the file ' filename' because it is being used by another process.
I have method that writes to a NEW file and it works. How to use it to overwrite current file.
Edit:
I am using binarywriter http://msdn.microsoft.com/en-us/library/atxb4f07.aspx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
很可能当您加载文件时,您没有关闭 FileStream 或用于读取该文件的任何内容。始终对您的信息流使用
using
语句 (以及其他实现 IDisposable 的类型),这应该不是问题。 (当然,如果您实际上在单独的应用程序中打开该文件,那完全是一个不同的问题。)因此,
您应该使用更像这样的内容:
或者理想情况下,使用
File
为您完成这一切:Chances are that when you loaded the file, you didn't close the
FileStream
or whatever you used to read it. Always use ausing
statement for your streams (and other types implementingIDisposable
), and it shouldn't be a problem. (Of course if you actually have that file open in a separate application, that's a different problem entirely.)So instead of:
You should use something more like:
Or ideally, use the methods in
File
which do it all for you:检查您是否正在关闭文件流。如果没有,那么你就是在阻碍自己。
Check if you're closing stream to the file. If not then you're blocking yourself.
假设您已正确关闭最初用于打开和读取文件的流,要根据文件是否存在来创建、追加或失败,您应该在 FileStream 构造函数中使用 FileMode 参数。
一切都取决于您打开 FileStream 的方式,请参阅此处: FileStream 构造函数(String、FileMode )
如果您指定 FileMode 创建:
Assuming that you have correctly closed the stream you used to open and read the file initially, to create, append or fail depending of file existence you should use the FileMode parameter in FileStream constructor.
Everything depends on the way you open the FileStream, see here: FileStream Constructor (String, FileMode)
if you specify FileMode Create: