var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
writer.Write(....);
Nếu tệp trước đây có chứa văn bản và văn bản mới được viết ngắn hơn những gì đã có trong tệp, làm cách nào để đảm bảo rằng nội dung lỗi thời trong tệp bị cắt bớt?FileStream và StreamWriter - Làm thế nào để cắt bớt phần còn lại của tập tin sau khi viết?
Lưu ý rằng mở tệp ở chế độ cắt ngắn không phải là một tùy chọn trong trường hợp này. Tệp đã mở khi tôi nhận được đối tượng FileStream
. Đoạn mã trên chỉ để minh họa các thuộc tính của luồng.
EDIT
Mở rộng trên câu trả lời dưới đây, giải pháp là:
var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
{
writer.Write(....);
writer.Flush();
fs.SetLength(fs.Position);
}
Mã câu trả lời/giải pháp có vẻ sai với tôi: Đọc fs.Position ** trước khi ** được gọi là writer.Flush hoặc writer.Dipose() sẽ không cung cấp cho bạn số byte thực. Bạn có may mắn vì Luồng tự động mở rộng khi được ghi vào, nhưng tệp của bạn có thể bị phân đoạn không cần thiết do 2 điều chỉnh độ dài được áp dụng cho 1 lần ghi. – springy76