Exemplo n.º 1
0
 private void getChildFolderAndFile(DirectoryInfo sb, int id)
 {
     try
     {
         IMonitorServerFolderService imsfs = BLLFactory.ServiceAccess.CreateMonitorServerFolderService();
         if (sb is DirectoryInfo)
         {
             FileSystemInfo[] fsis = sb.GetFileSystemInfos();
             if (fsis.Count() > 0)
             {
                 foreach (FileSystemInfo fsi in fsis)
                 {
                     if (fsi is FileInfo)
                     {
                         if (fsi.Exists)
                         {
                             MonitorServerFolder msf = minitorFolderDataFormat(fsi, "0", id);
                             int innerId             = imsfs.InsertMonitorServerFolder(msf);
                         }
                     }
                     else
                     {
                         MonitorServerFolder msf = minitorFolderDataFormat(fsi, "0", id);
                         int innerId             = imsfs.InsertMonitorServerFolder(msf);
                         getChildFolderAndFile((DirectoryInfo)fsi, id);
                     }
                 }
             }
             else
             {
                 return;
             }
         }
         else
         {
             return;
         }
     }
     catch (Exception ex)
     {
         logger.Error(ex.Message);
     }
 }
Exemplo n.º 2
0
 public MonitorServerFolderManager(IMonitorServerFolderService monitorServerFolderService)
 {
     this.monitorServerFolderService = monitorServerFolderService;
 }
Exemplo n.º 3
0
        /// <summary>
        /// 变化处理
        /// </summary>
        /// <param name="state"></param>
        private void OnWatchedFileChange(object state)
        {
            IMonitorServerFileService   MonitorServerFileService   = BLLFactory.ServiceAccess.CreateMonitorServerFileService();
            IMonitorServerFolderService MonitorServerFolderService = BLLFactory.ServiceAccess.CreateMonitorServerFolderService();
            // File Info
            SortedList htfilescopy = (SortedList)htfiles.Clone();
            Mutex      mutex       = new Mutex(false, "FSW");

            mutex.WaitOne();
            mutex.ReleaseMutex();

            foreach (DictionaryEntry file in htfilescopy)
            {
                try
                {
                    FileSystemEventArgs fileevent = (FileSystemEventArgs)file.Value;
                    //源路径
                    string filepath = System.IO.Path.GetFullPath(file.Key.ToString());
                    //备份路径
                    string backuppath = Path.Combine(_copydir, fileevent.Name);

                    MonitorServerFile   monitorServerFile   = new MonitorServerFile();
                    MonitorServerFolder monitorServerFolder = new MonitorServerFolder();

                    // copy機能
                    if (fileevent.ChangeType.Equals(WatcherChangeTypes.Created))
                    {
                        // Copy方法変更 2014/01/30 変更
                        //bool result = FileSystem.FileCopy(filepath, backuppath);
                        CopyDirectory fileCopy = new CopyDirectory(filepath, backuppath);
                        fileCopy.StarCopy();
                        //IO問題であれば、次のファイルを処理する
                        if (fileCopy._Errorlist.Count > 0)
                        {
                            foreach (string errorMessage in fileCopy._Errorlist)
                            {
                                logger.Error(errorMessage);
                            }
                            continue;
                        }
                        //if (!result)
                        //{
                        //    continue;
                        //}
                        //判断是否是目录
                        if (Directory.Exists(filepath))
                        {
                            monitorServerFile.monitorFileType   = Path.GetExtension(backuppath);
                            monitorServerFile.monitorFileSize   = "0";
                            monitorServerFile.monitorFileStatus = 1;
                            //---
                            monitorServerFolder.monitorServerID = _id;
                            monitorServerFolder.monitorFileName = Path.GetFileName(fileevent.Name);
                            monitorServerFolder.monitorFilePath = filepath.TrimEnd(("\\" + Path.GetFileName(fileevent.Name)).ToCharArray());
                            monitorServerFolder.monitorFileType = "99";
                            monitorServerFolder.initFlg         = "0";
                            monitorServerFolder.monitorFlg      = "0";
                            monitorServerFolder.creater         = "admin";
                            monitorServerFolder.updater         = "admin";
                            monitorServerFolder.createDate      = CommonUtil.DateTimeNowToString();
                            monitorServerFolder.updateDate      = CommonUtil.DateTimeNowToString();
                        }
                        else
                        {
                            System.IO.FileInfo fileinfo = new System.IO.FileInfo(backuppath);
                            monitorServerFile.monitorFileType   = Path.GetExtension(backuppath);
                            monitorServerFile.monitorFileSize   = fileinfo.Length.ToString();
                            monitorServerFile.monitorFileStatus = 1;
                            //---
                            monitorServerFolder.monitorServerID = _id;
                            monitorServerFolder.monitorFileName = Path.GetFileName(fileevent.Name);
                            monitorServerFolder.monitorFilePath = filepath.TrimEnd(("\\" + Path.GetFileName(fileevent.Name)).ToCharArray());
                            monitorServerFolder.monitorFileType = Path.GetExtension(backuppath);
                            monitorServerFolder.initFlg         = "0";
                            monitorServerFolder.monitorFlg      = "1";
                            monitorServerFolder.creater         = "admin";
                            monitorServerFolder.updater         = "admin";
                            monitorServerFolder.createDate      = CommonUtil.DateTimeNowToString();
                            monitorServerFolder.updateDate      = CommonUtil.DateTimeNowToString();
                        }
                        //新增文件默认为监视,添加check
                        MonitorServerFolderService.InsertMonitorServerFolder(monitorServerFolder);
                    }
                    else if (fileevent.ChangeType.Equals(WatcherChangeTypes.Changed))
                    {
                        System.IO.FileInfo fileinfo = new System.IO.FileInfo(backuppath);
                        if (fileinfo.IsReadOnly)
                        {
                            continue;
                        }
                        fileinfo.IsReadOnly = true;
                        // Copy方法変更 2014/01/30 変更
                        //bool result = FileSystem.FileCopy(filepath, backuppath);
                        CopyDirectory fileCopy = new CopyDirectory(filepath, backuppath);
                        fileCopy.StarCopy();
                        //IO問題であれば、次のファイルを処理する
                        if (fileCopy._Errorlist.Count > 0)
                        {
                            foreach (string errorMessage in fileCopy._Errorlist)
                            {
                                logger.Error(errorMessage);
                            }
                            continue;
                        }
                        //if (!result)
                        //{
                        //    continue;
                        //}
                        //判断是否是目录
                        if (Directory.Exists(filepath))
                        {
                            monitorServerFile.monitorFileType   = Path.GetExtension(backuppath);
                            monitorServerFile.monitorFileSize   = "0";
                            monitorServerFile.monitorFileStatus = 2;
                        }
                        else
                        {
                            monitorServerFile.monitorFileType   = Path.GetExtension(backuppath);
                            monitorServerFile.monitorFileSize   = fileinfo.Length.ToString();
                            monitorServerFile.monitorFileStatus = 2;
                        }
                    }
                    else if (fileevent.ChangeType.Equals(WatcherChangeTypes.Deleted))
                    {
                        //判断被删除的目录是否存在
                        if (Directory.Exists(backuppath))
                        {
                            monitorServerFile.monitorFileType = Path.GetExtension(backuppath);
                            monitorServerFile.monitorFileSize = "0";
                            bool result = FileSystem.FileDelete(backuppath);
                            //如果出现IO冲突,去执行下一个
                            if (!result)
                            {
                                continue;
                            }
                            monitorServerFile.monitorFileStatus = 3;
                        }
                        //判断被删除的文件是否存在
                        else if (File.Exists(backuppath))
                        {
                            System.IO.FileInfo fileinfo = new System.IO.FileInfo(backuppath);
                            fileinfo.IsReadOnly = false;
                            monitorServerFile.monitorFileType = Path.GetExtension(backuppath);
                            monitorServerFile.monitorFileSize = fileinfo.Length.ToString();
                            bool result = FileSystem.FileDelete(backuppath);
                            //如果出现IO冲突,去执行下一个
                            if (!result)
                            {
                                continue;
                            }
                            monitorServerFile.monitorFileStatus = 3;
                        }
                        else
                        {
                            // File Info Remove
                            htfiles.Remove(file.Key);
                            continue;
                        }
                    }
                    else if (fileevent.ChangeType.Equals(WatcherChangeTypes.Renamed))
                    {
                        RenamedEventArgs refileevent = (RenamedEventArgs)file.Value;
                        string           oldfilename = refileevent.OldName.ToString();
                        string           olddir      = Path.Combine(_copydir, oldfilename);
                        if (Path.GetExtension(olddir) == string.Empty)
                        {
                            //old file dir info insert
                            if (Directory.Exists(olddir))
                            {
                                MonitorServerFile monitorServerFile1 = new MonitorServerFile();
                                monitorServerFile1.monitorServerID   = _id;
                                monitorServerFile1.monitorFileName   = Path.GetFileName(oldfilename);
                                monitorServerFile1.monitorFilePath   = olddir;
                                monitorServerFile1.monitorFileType   = Path.GetExtension(olddir);
                                monitorServerFile1.monitorFileSize   = "0";
                                monitorServerFile1.monitorStartTime  = CommonUtil.DateTimeNowToString();
                                monitorServerFile1.monitorFileStatus = 3;
                                monitorServerFile1.transferFlg       = 0;
                                monitorServerFile1.deleteFlg         = 0;
                                monitorServerFile1.creater           = "exe";
                                monitorServerFile1.createDate        = CommonUtil.DateTimeNowToString();
                                monitorServerFile1.updater           = "exe";
                                monitorServerFile1.updateDate        = CommonUtil.DateTimeNowToString();
                                MonitorServerFileService.InsertMonitorServerFile(monitorServerFile1, filepath);
                                bool result = FileSystem.FileDelete(olddir);
                                //如果出现IO冲突,去执行下一个
                                if (!result)
                                {
                                    continue;
                                }
                            }
                            // Copy方法変更 2014/01/30 変更
                            //bool result1 = FileSystem.FileCopy(filepath, backuppath);
                            CopyDirectory fileCopy = new CopyDirectory(filepath, backuppath);
                            fileCopy.StarCopy();
                            //IO問題であれば、次のファイルを処理する
                            if (fileCopy._Errorlist.Count > 0)
                            {
                                foreach (string errorMessage in fileCopy._Errorlist)
                                {
                                    logger.Error(errorMessage);
                                }
                                continue;
                            }
                            //if (!result1)
                            //{
                            //    continue;
                            //}
                            //new file dir info insert
                            monitorServerFile.monitorFileType   = Path.GetExtension(backuppath);
                            monitorServerFile.monitorFileSize   = "0";
                            monitorServerFile.monitorFileStatus = 4;
                            //---
                            monitorServerFolder.monitorServerID = _id;
                            monitorServerFolder.monitorFileName = Path.GetFileName(fileevent.Name);
                            monitorServerFolder.monitorFilePath = filepath.TrimEnd(("\\" + Path.GetFileName(fileevent.Name)).ToCharArray());
                            monitorServerFolder.monitorFileType = "99";
                            monitorServerFolder.initFlg         = "0";
                            monitorServerFolder.monitorFlg      = "0";
                            monitorServerFolder.creater         = "admin";
                            monitorServerFolder.updater         = "admin";
                            monitorServerFolder.createDate      = CommonUtil.DateTimeNowToString();
                            monitorServerFolder.updateDate      = CommonUtil.DateTimeNowToString();
                        }
                        else
                        {
                            //old file info insert
                            if (File.Exists(olddir))
                            {
                                MonitorServerFile monitorServerFile1 = new MonitorServerFile();
                                monitorServerFile1.monitorServerID = _id;
                                monitorServerFile1.monitorFileName = Path.GetFileName(oldfilename);
                                monitorServerFile1.monitorFilePath = olddir;
                                System.IO.FileInfo fileinfo1 = new System.IO.FileInfo(olddir);
                                monitorServerFile1.monitorFileType   = Path.GetExtension(olddir);
                                monitorServerFile1.monitorFileSize   = fileinfo1.Length.ToString();
                                monitorServerFile1.monitorStartTime  = CommonUtil.DateTimeNowToString();
                                monitorServerFile1.monitorFileStatus = 3;
                                monitorServerFile1.transferFlg       = 0;
                                monitorServerFile1.deleteFlg         = 0;
                                monitorServerFile1.creater           = "exe";
                                monitorServerFile1.createDate        = CommonUtil.DateTimeNowToString();
                                monitorServerFile1.updater           = "exe";
                                monitorServerFile1.updateDate        = CommonUtil.DateTimeNowToString();
                                MonitorServerFileService.InsertMonitorServerFile(monitorServerFile1, filepath);
                                fileinfo1.IsReadOnly = false;
                                bool result = FileSystem.FileDelete(olddir);
                                //如果出现IO冲突,去执行下一个
                                if (!result)
                                {
                                    continue;
                                }
                            }
                            // Copy方法変更 2014/01/30 変更
                            //bool result1 = FileSystem.FileCopy(filepath, backuppath);
                            CopyDirectory fileCopy = new CopyDirectory(filepath, backuppath);
                            fileCopy.StarCopy();
                            //IO問題であれば、次のファイルを処理する
                            if (fileCopy._Errorlist.Count > 0)
                            {
                                foreach (string errorMessage in fileCopy._Errorlist)
                                {
                                    logger.Error(errorMessage);
                                }
                                continue;
                            }
                            //if (!result1)
                            //{
                            //    continue;
                            //}
                            //new file info insert
                            System.IO.FileInfo fileinfo = new System.IO.FileInfo(backuppath);
                            monitorServerFile.monitorFileType   = Path.GetExtension(backuppath);
                            monitorServerFile.monitorFileSize   = fileinfo.Length.ToString();
                            monitorServerFile.monitorFileStatus = 4;
                            //---
                            monitorServerFolder.monitorServerID = _id;
                            monitorServerFolder.monitorFileName = Path.GetFileName(fileevent.Name);
                            monitorServerFolder.monitorFilePath = filepath.TrimEnd(("\\" + Path.GetFileName(fileevent.Name)).ToCharArray());
                            monitorServerFolder.monitorFileType = Path.GetExtension(backuppath);
                            monitorServerFolder.initFlg         = "0";
                            monitorServerFolder.monitorFlg      = "1";
                            monitorServerFolder.creater         = "admin";
                            monitorServerFolder.updater         = "admin";
                            monitorServerFolder.createDate      = CommonUtil.DateTimeNowToString();
                            monitorServerFolder.updateDate      = CommonUtil.DateTimeNowToString();
                        }
                        //重命名后文件默认为监视,添加check
                        MonitorServerFolderService.InsertMonitorServerFolder(monitorServerFolder);
                    }
                    //insert database
                    monitorServerFile.monitorServerID  = _id;
                    monitorServerFile.monitorFileName  = Path.GetFileName(fileevent.Name);
                    monitorServerFile.monitorFilePath  = backuppath;
                    monitorServerFile.monitorStartTime = CommonUtil.DateTimeNowToString();
                    monitorServerFile.transferFlg      = 0;
                    monitorServerFile.deleteFlg        = 0;
                    monitorServerFile.creater          = "exe";
                    monitorServerFile.createDate       = CommonUtil.DateTimeNowToString();
                    monitorServerFile.updater          = "exe";
                    monitorServerFile.updateDate       = CommonUtil.DateTimeNowToString();
                    MonitorServerFileService.InsertMonitorServerFile(monitorServerFile, filepath);
                    // File Info Remove
                    htfiles.Remove(file.Key);
                }
                catch (Exception e)
                {
                    logger.Error(e.Message);
                    continue;
                }
            }
        }