StreamReader는 텍스트 파일을 읽는 동안 잠급니다.
강제로 StreamReader를 "읽기 전용"모드 또는 "비 잠금"모드로 작동시킬 수 있습니까?StreamReader가 사용되는 동안 텍스트 파일을 잠그지 않도록 할 수 있습니까?
임시 해결책으로 파일을 복사하고 거기에서 읽을 수 있지만 가능한 경우 직접 StreamReader를 사용하는 것이 좋습니다. 다른 대안이 있습니까?
배경 :
로그 파일에서 일부 통계를 얻기 위해 작은 응용 프로그램을 작성했습니다. 이 파일은 외부 프로그램에 의해 끊임없이 업데이트되고 (수 초간) AAXXYY 호출이 가능합니다.
출력을 검토하면 내 앱이 파일을 잠그고 AAXXYY이 (가) 작성되지 않을 수 있음을 알 수 있습니다.
이 내가 당신을 위해 StreamReader로하여 FileStream을 통과하고 적절한 파일 공유 값으로하여 FileStream을 만들 수 있습니다
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 이것은 잘 작동합니다. 고맙습니다. 나는 "var"를 FileStream & StreamReader로 대체해야했지만. var는 무엇을하도록지지 받습니까? VB인가? 이 답변을 변경해야 편집 할 수 있다고 생각하지만 담당자에게 직접 문의하십시오. –
'var'키워드에 대한 내용은 다음 링크를 참조하십시오. http://msdn.microsoft.com/en-us/library/bb383973 .aspx. 이 키워드는 C# 3.0 이상에서 새로 추가되었습니다. – pyrocumulus
아하. 고마워. 어두운 시대에서 일하기에 나에게 맞는 것입니다. 부끄러운 줄 알아서 +1을 쓸 수 없다 :-) –