如果文件存在,我想先删除它然后写入文件。这是代码:
try
{
if (File.Exists("qwe.mp4"))
{
File.Delete("qwe.mp4");
}
File.WriteAllBytes("qwe.mp4", encodedDataAsBytes);
}
然而,当我运行程序时,它不会删除现有程序,但会将之前的数据附加到下一个。 (第一个数据仅2秒,在追加新数据后,它获得4秒)。但新数据无法读取,这意味着它只能在前2秒播放,而其他2秒无法读取。
我应该如何解决这个问题?我想永久删除现有文件并使用新数据创建一个新文件。
答案 0 :(得分:4)
File.WriteAllBytes()
会覆盖该文件(如果该文件已存在),因此您无需明确删除该文件。
答案 1 :(得分:1)
你应该总是使用绝对路径来确保你正在查看正确的文件
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);
}
}