Tôi cần xóa nội dung của một tệp cụ thể mỗi khi ứng dụng khởi động. Tôi phải làm nó như thế nào?
Câu trả lời:
Bạn có thể sử dụng phương thức File.WriteAllText .
System.IO.File.WriteAllText(@"Path/foo.bar",string.Empty);
IO exceptions of file is in use
, vì vậy tôi khuyên bạn nên để xử lý nó bằng tay thông qua dòng tập tin
Đây là những gì tôi đã làm để xóa nội dung của tệp mà không tạo tệp mới vì tôi không muốn tệp hiển thị thời gian tạo mới ngay cả khi ứng dụng vừa cập nhật nội dung của nó.
FileStream fileStream = File.Open(<path>, FileMode.Open);
/*
* Set the length of filestream to 0 and flush it to the physical file.
*
* Flushing the stream is important because this ensures that
* the changes to the stream trickle down to the physical file.
*
*/
fileStream.SetLength(0);
fileStream.Close(); // This flushes the content, too.
Cách đơn giản nhất để làm điều này có lẽ là xóa tệp qua ứng dụng của bạn và tạo một tệp mới có cùng tên ... thậm chí còn đơn giản hơn chỉ cần làm cho ứng dụng của bạn ghi đè nó bằng một tệp mới.
Cách dễ nhất là:
File.WriteAllText(path, string.Empty)
Tuy nhiên, tôi khuyên bạn nên sử dụng FileStream
vì giải pháp đầu tiên có thể némUnauthorizedAccessException
using(FileStream fs = File.Open(path,FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
lock(fs)
{
fs.SetLength(0);
}
}
File.WriteAllText
, có vẻ như điều này đôi khi (?) Xóa tệp vì các liên kết cứng không được cập nhật.