【问题标题】:Backing up multiple files then clearing it备份多个文件然后清除它
【发布时间】:2012-08-21 17:42:43
【问题描述】:

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

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

总结一下:我怎样才能让它不同时备份所有文件?我阅读了有关进程的信息,但我认为它仅适用于可执行文件,对吗?

【问题讨论】:

    标签: c# process windows-services filesystemwatcher


    【解决方案1】:

    你有没有这样尝试过:

        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();
    }
    

    【讨论】:

    • 感谢您的努力,我真的很感激它.. :D 但我也编写了一个类似功能的代码,只是更简单.. 但我真正关心的是我将如何多次执行它文件(备份)连续,而不是同时..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多