我正在编写一个解析Windows服务日志文件的程序。该程序工作正常,它可以正确读取和解析日志文件等。 问题是,当我尝试在服务处于活动状态时运行它时,它会返回一个IOError,我猜是因为文件被“锁定”或类似的东西。有解决方法吗?这是我用来读取和解析文件的代码:
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
var t = Task<int>.Factory.StartNew(() =>
{
string[] arr = FileManager.getFiles(textBox1.Text);
string destination = textBox1.Text + "\\backup\\";
string filename = "backup.bak";
if (!Directory.Exists(@destination))
{
Directory.CreateDirectory(@destination);
}
StreamWriter w = File.AppendText(@destination+backupfile);
foreach (string s in arr)
{
string sLine = "";
StreamReader objReader = new StreamReader(s);
while (sLine != null)
{
sLine = objReader.ReadLine();
if (!String.IsNullOrEmpty(sLine))
{
List<string> output = Parser.parse(sLine);
StreamWriter hh = File.AppendText(@textBox2.Text + filename);
for(int i = 3; i < output.Count; i++)
{
string str = output[i];
if (!String.IsNullOrEmpty(str))
{
hh.WriteLine(str);
}
}
hh.Close();
w.WriteLine(sLine);
}
}
objReader.Close();
//File.Delete(s);
}
w.Close();
return 1;
});
}
答案 0 :(得分:0)
替换
new StreamReader(s)
带
new StreamReader(File.OpenRead(s))
或
new StreamReader(new FileStream(s, FileMode.Open))