备份多个文件然后清除它

时间:2012-08-21 17:42:43

标签: c# process windows-services filesystemwatcher

我已经有一个带有filesystemwatcher的Windows服务,它检查任何已更改的文件(例如大小)。如果日志文件已达到1mb,则会将其复制到另一个文件夹中,并清除原始日志文件。

我创建了一个Windows窗体项目,它有一个模拟我的Windows服务正在做什么的按钮。我尝试创建一个将检查多个文本文件大小的forloop。我创建了3个超过1mb的日志文件并运行了我的项目。它给出了“设备未就绪”错误,它与StreamWriter有关。我认为所有文件都在同时读取和备份。

总结一下:如何让它不能同时备份所有文件?我读过有关进程但我认为它只适用于可执行文件,我是对的吗?

1 个答案:

答案 0 :(得分:0)

你试过这种方式:

    if(!File.Exists(filename)) //No File? Create
{
    fs = File.Create(filename);
    fs.Close();
}
if(File.ReadAllBytes().Lenght >= 100*1024*1024) // (100mB) File to big? Create new
{
    string filenamebase = "myLogFile"; //Insert the base form of the log file, the same as the 1st filename without .log at the end
    if(filename.contains("-")) //Check if older log contained -x
    {
         int lognumber = Int32.Parse(filename.substring(filename.lastIndexOf("-")+1, filename.Length-4); //Get old number, Can cause exception if the last digits aren't numbers
         lognumber++; //Increment lognumber by 1
         filename = filenamebase + "-" + lognumber + ".log"; //Override filename
    }
    else 
    {
         filename = filenamebase + "-1.log"; //Override filename
    }
    fs = File.Create(filename);
    fs.Close();
}