不删除现有文件

时间:2012-10-20 08:53:14

标签: c# file

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

try
{
    if (File.Exists("qwe.mp4"))
    {
        File.Delete("qwe.mp4");
    }
    File.WriteAllBytes("qwe.mp4", encodedDataAsBytes);                   
}

然而,当我运行程序时,它不会删除现有程序,但会将之前的数据附加到下一个。 (第一个数据仅2秒,在追加新数据后,它获得4秒)。但新数据无法读取,这意味着它只能在前2秒播放,而其他2秒无法读取。

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

3 个答案:

答案 0 :(得分:4)

File.WriteAllBytes()会覆盖该文件(如果该文件已存在),因此您无需明确删除该文件。

答案 1 :(得分:1)

您必须为File.ExistsFile.Delete

添加文件的完整路径

你应该总是使用绝对路径来确保你正在查看正确的文件

public static bool Exists(
    string path
)

否则可能是文件被覆盖File.WriteAllBytes,因为它创建一个新文件,将指定的字节数组写入文件,然后关闭文件。

如果目标文件已存在,则会被覆盖。

答案 2 :(得分:1)

如果您希望覆盖现有内容,为什么不简单地创建一个FileMode.Create这样的文件流

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);
  }
}