Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c覆盖/保存当前文件_C#_File_Save_Overwrite - Fatal编程技术网

C# c覆盖/保存当前文件

C# c覆盖/保存当前文件,c#,file,save,overwrite,C#,File,Save,Overwrite,我正在用c,windows窗体做编辑器。我希望将文件的“新内容”保存在通常使用“保存”选项的同一文件中,但我收到IOException,[进程无法访问文件“filename”,因为它正被另一进程使用。 我有一个方法可以写入一个新文件,它可以工作。如何使用它来覆盖当前文件 编辑: 我正在使用binarywriter加载文件时,可能没有关闭文件流或用于读取文件的任何内容。始终对流和实现IDisposable的其他类型使用a,这不应该是一个问题。当然,如果在单独的应用程序中打开该文件,则整个问题就不同

我正在用c,windows窗体做编辑器。我希望将文件的“新内容”保存在通常使用“保存”选项的同一文件中,但我收到IOException,[进程无法访问文件“filename”,因为它正被另一进程使用。 我有一个方法可以写入一个新文件,它可以工作。如何使用它来覆盖当前文件

编辑:
我正在使用binarywriter

加载文件时,可能没有关闭文件流或用于读取文件的任何内容。始终对流和实现IDisposable的其他类型使用a,这不应该是一个问题。当然,如果在单独的应用程序中打开该文件,则整个问题就不同了很好

因此,不是:

// Bad code
StreamReader reader = File.OpenText("foo.txt");
string data = reader.ReadToEnd();
// Nothing is closing the reader here! It'll keep an open
// file handle until it happens to be finalized
您应该使用更类似于:

string data;
using (TextReader reader = File.OpenText("foo.txt"))
{
    data = reader.ReadToEnd();
}
// Use data here - the handle will have been closed for you
或者,理想情况下,使用为您做到这一切的方法:

string text = File.ReadAllText("foo.txt");

加载文件时,可能没有关闭文件流或任何用于读取文件流的内容。始终对实现IDisposable的流和其他类型使用a,这不应该是一个问题。当然,如果您在单独的应用程序中实际打开了该文件,则这是一个完全不同的问题

因此,不是:

// Bad code
StreamReader reader = File.OpenText("foo.txt");
string data = reader.ReadToEnd();
// Nothing is closing the reader here! It'll keep an open
// file handle until it happens to be finalized
您应该使用更类似于:

string data;
using (TextReader reader = File.OpenText("foo.txt"))
{
    data = reader.ReadToEnd();
}
// Use data here - the handle will have been closed for you
或者,理想情况下,使用为您做到这一切的方法:

string text = File.ReadAllText("foo.txt");

检查您是否正在关闭文件流。如果没有,则您正在阻止自己。

检查您是否正在关闭文件流。如果没有,则您正在阻止自己。

假设您已正确关闭最初用于打开和读取文件的流,要根据文件的存在创建、追加或失败,您应该使用FileStream构造函数中的FileMode参数

一切都取决于打开文件流的方式,请参见此处:

如果指定创建:

指定操作系统应创建新文件。如果 文件已存在,将被覆盖。这需要 FileIOPermissionAccess.Write.System.IO.FileMode.Create等效 如果文件不存在,请使用CreateNew; 否则,请使用Truncate。如果该文件已存在但为隐藏文件 文件,则引发UnauthorizedAccessException


假设您已经正确地关闭了最初用于打开和读取文件的流,要根据文件的存在创建、追加或失败,您应该使用FileStream构造函数中的FileMode参数

一切都取决于打开文件流的方式,请参见此处:

如果指定创建:

指定操作系统应创建新文件。如果 文件已存在,将被覆盖。这需要 FileIOPermissionAccess.Write.System.IO.FileMode.Create等效 如果文件不存在,请使用CreateNew; 否则,请使用Truncate。如果该文件已存在但为隐藏文件 文件,则引发UnauthorizedAccessException


你是如何打开文本文件的?这可能只是设置覆盖标志的一种情况…你能显示你现在用来保存文件的代码吗?你是如何打开文件的?如果没有一些代码,就很难说是什么问题。可能重复你是如何打开文本文件的?这可能只是设置覆盖的一种情况flag…你能显示你现在用来保存文件的代码吗?你是如何打开文件的?如果没有一些代码,很难说是什么问题。可能是重复