C# 不删除现有文件

C# 不删除现有文件,c#,file,C#,File,如果文件存在,我想先删除它,然后再写入文件。代码如下: try { if (File.Exists("qwe.mp4")) { File.Delete("qwe.mp4"); } File.WriteAllBytes("qwe.mp4", encodedDataAsBytes); } 但是,当我运行程序时,它不会删除现有数据,而是将以前的数据附加到下一个数据。(第一个数据只需2秒,附加新数据后,它将获得4秒)

如果文件存在,我想先删除它,然后再写入文件。代码如下:

try
{
    if (File.Exists("qwe.mp4"))
    {
        File.Delete("qwe.mp4");
    }
    File.WriteAllBytes("qwe.mp4", encodedDataAsBytes);                   
}
但是,当我运行程序时,它不会删除现有数据,而是将以前的数据附加到下一个数据。(第一个数据只需2秒,附加新数据后,它将获得4秒)。但新数据无法读取,这意味着只能在前2秒播放,而其他2秒无法读取


我应该如何解决这个问题?我希望永久删除现有文件,并使用新数据创建新文件。

如果文件已经存在,则覆盖该文件,因此您不需要显式删除它。

您必须为和包含文件的完整路径

您应该始终使用绝对路径来确保查看的是正确的文件

或者,在创建新文件、将指定的字节数组写入文件,然后关闭文件时,可能会覆盖该文件


如果目标文件已经存在,它将被覆盖。

如果您希望覆盖现有内容,为什么不简单地使用
FileMode创建一个文件流

using (FileStream my_stream = new FileStream("filename.mp4", FileMode.Create, FileAccess.Write)) {
  using (BinaryWriter my_writer = new BinaryWriter(my_stream)) {
    my_writer.Write(my_data);
  }
}

File.writealBytes
覆盖文件内容。如果数据被追加到文件中,则会运行其他一些代码。建议:在debugger.File.WriteAllBytes中逐步执行,创建新文件,将指定的字节数组写入该文件,然后关闭该文件。如果目标文件已经存在,它将被覆盖。
相对路径信息被解释为相对于当前工作目录。
因此这并不完全正确,但您应该始终使用绝对路径来确保查看的是正确的文件。我看不到这种行为。文档中有说明,但我似乎必须先显式删除该文件,然后调用writealBytes()。我使用了这种方法,但有时新文件会在删除现有文件之前开始写入,对此有何想法?谢谢
using (FileStream my_stream = new FileStream("filename.mp4", FileMode.Create, FileAccess.Write)) {
  using (BinaryWriter my_writer = new BinaryWriter(my_stream)) {
    my_writer.Write(my_data);
  }
}