StreamReader khóa một tệp văn bản trong khi nó đang đọc nó.
Tôi có thể buộc StreamReader hoạt động ở chế độ "chỉ đọc" hoặc "không khóa" không?Tôi có thể ngăn StreamReader khóa một tệp văn bản trong khi đang sử dụng không?
Giải pháp của tôi là sao chép tệp vào vị trí tạm thời và đọc tệp từ đó nhưng tôi muốn sử dụng trực tiếp StreamReader nếu có thể. Bất kỳ suggetions thay thế?
Bối cảnh:
Tôi đã viết một ứng dụng nhỏ để lấy một số thống kê trong tệp nhật ký. Tập tin này liên tục được cập nhật (vài lần một giây) bởi một chương trình bên ngoài cho phép gọi AAXXYY.
Xem lại kết quả cho thấy ứng dụng của tôi có thể đang khóa tệp và ngăn không cho AAXXYY viết.
Đây là những gì tôi đang làm
private void btnGetStats_Click(object sender, EventArgs e)
{
int countStarts = 0;
int countEnds = 0;
IList<string> sessions = new List<string>();
using(StreamReader stRead = new StreamReader(openFileDialog1.FileName,Encoding.Unicode))
{
while(!stRead.EndOfStream)
{
string line = stRead.ReadLine();
if(line.Contains("Session start"))
{
countStarts++;
sessions.Add(line.Substring(line.IndexOf("["), line.LastIndexOf("]") - line.IndexOf("[")));
}
if (line.Contains("Session end"))
{
countEnds++;
sessions.Remove(line.Substring(line.IndexOf("["), line.LastIndexOf("]") - line.IndexOf("[")));
}
}
}
txtStarts.Text = countStarts.ToString();
txtEnds.Text = countEnds.ToString();
txtDifference.Text = (countStarts - countEnds).ToString();
listBox1.DataSource = sessions;
}
+1 tính năng này hoạt động tốt. Cảm ơn bạn. Mặc dù tôi đã phải thay thế "var" bằng FileStream & StreamReader. Những gì đã được var suppossed để làm gì? Đó có phải là VB không? Tôi nghĩ rằng câu trả lời này nên được chỉnh sửa để thay đổi những điều đó nhưng tôi không có đại diện để tự mình làm điều đó –
Về từ khóa 'var', hãy xem liên kết này: http://msdn.microsoft.com/en-us/library/bb383973 .aspx. Từ khóa đó là mới trong C# 3.0+. – pyrocumulus
Aha. Cảm ơn đám mây. Phục vụ tôi đúng khi làm việc trong thời đại tăm tối. Xấu hổ Tôi không thể +1 nhận xét :-) –