亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#用FileSystemWatcher監(jiān)視系統(tǒng)中目錄下文件的變動(dòng)

admin
2023年12月26日 22:50 本文熱度 1785

前沿:前不久在逛網(wǎng)的時(shí)候下到一個(gè)SyncPlicity軟件,是一種支持多文件夾的免費(fèi)網(wǎng)絡(luò)同步工具。簡(jiǎn)單的說(shuō)就是安裝此軟件后您可以指定一個(gè)或多個(gè)監(jiān)視目錄,當(dāng)這些目錄中的文件發(fā)生改變后(重命名,刪除,移動(dòng),創(chuàng)建)他會(huì)將改動(dòng)的內(nèi)容傳給遠(yuǎn)端服務(wù)器。這樣你在異地只要安裝了這個(gè)軟件,便可以從遠(yuǎn)端服務(wù)器上同步到這些變動(dòng)的文件,同時(shí)異地上的任何操作又將同樣的傳遞到本地。

        于是來(lái)了興趣,打算模擬一下如何去監(jiān)視指定的目錄的變動(dòng)。

        1、通過(guò)Timer來(lái)間隔檢測(cè)文件夾中的變動(dòng),主要是對(duì)最后時(shí)間進(jìn)行判斷。

        2、能否基于系統(tǒng)提供的Api或類庫(kù)來(lái)實(shí)現(xiàn)監(jiān)視?

        顯然,對(duì)于第一種方案是很不科學(xué),也很不好把控的。如果用timer那么將會(huì)占用過(guò)多的資源,同時(shí)對(duì)于變動(dòng)不能很明確的定位,在過(guò)深層級(jí)下的文件變動(dòng)通過(guò)這種方式將很難遍歷到,即便能夠遍歷到則其中的遍歷也會(huì)增加系統(tǒng)的復(fù)雜度。然而在Net提供的類中有一個(gè)System.IO.FileSystemWatcher 通過(guò)命名就可以看出其功效——監(jiān)視者。于是按照自己的思路進(jìn)行Demo的編寫。

 1using System;
 2
using System.Collections.Generic;
 3
using System.Linq;
 4
using System.Text;
 5
using System.IO;
 6
namespace FileWatch
 7
{
 8
    class Program
 9
    {
10
        static void Main(string[] args)
11
        {
12
            //用于輸入需要監(jiān)聽(tīng)的路徑 例如 c:\
13
            string s = Console.ReadLine();
14            
new FileWatchClass(s);
15
            Console.ReadKey();
16
        }
17
    }
18

19
    class FileWatchClass
20
    {
21
        System.IO.FileSystemWatcher FileWatcher = new FileSystemWatcher ();
22
        public FileWatchClass(string WatcherPath)
23
        {
24
            FileWatcher.Filter = "*.*"//設(shè)定監(jiān)聽(tīng)的文件類型
25
            FileWatcher.Path = WatcherPath; //設(shè)定監(jiān)聽(tīng)的目錄
26
            FileWatcher.Changed += new FileSystemEventHandler(FileWatcher_Changed); //Changed 事件處理
27
            FileWatcher.Renamed += new RenamedEventHandler(FileWatcher_Renamed);//Renamed事件處理
28
            FileWatcher.Created += new FileSystemEventHandler(FileWatcher_Created);//Created事件處理
29
            FileWatcher.Deleted += new FileSystemEventHandler(FileWatcher_Deleted);//Deleted事件處理
30
            FileWatcher.IncludeSubdirectories = true;//設(shè)置監(jiān)聽(tīng)子目錄
31
            FileWatcher.EnableRaisingEvents = true;//開(kāi)始進(jìn)行監(jiān)聽(tīng)(其實(shí)此處是標(biāo)示是否進(jìn)行事件監(jiān)聽(tīng)和拋出)
32
        }
33

34
        void FileWatcher_Deleted(object sender, FileSystemEventArgs e)
35
        {
36
            Console.WriteLine(""+e.ChangeType+""+e.FullPath+" 刪除 ");
37
        }
38

39
        void FileWatcher_Created(object sender, FileSystemEventArgs e)
40
        {
41
            Console.WriteLine("" + e.ChangeType + "" + e.FullPath + " 被創(chuàng)建 ");
42
        }
43

44
        void FileWatcher_Renamed(object sender, RenamedEventArgs e)
45
        {
46
            Console.WriteLine("" + e.ChangeType + "" + e.OldFullPath + " 由原來(lái)名 " + e.OldName + " 改名為 " + e.Name);
47
        }
48

49
        void FileWatcher_Changed(object sender, FileSystemEventArgs e)
50
        {
51
            Console.WriteLine("" + e.ChangeType + "" + e.FullPath + " 發(fā)生改變 ");
52
        }
53
    }
54
}

編譯這個(gè)Demo,我們來(lái)進(jìn)行測(cè)試一下。原來(lái)本打算只是實(shí)現(xiàn)功能,當(dāng)測(cè)試時(shí)突然發(fā)現(xiàn)了系統(tǒng)在處理文件時(shí)的一些小信息:


1、同級(jí)目錄內(nèi)復(fù)制文件(Test.txt) 結(jié)果為(捕獲到 一次創(chuàng)建,兩次改變):

【Created】c:\復(fù)制Test.txt  被創(chuàng)建

【Changed】c:\復(fù)制Test.txt  發(fā)生改變

【Changed】c:\復(fù)制Test.txt  發(fā)生改變


2、非同級(jí)目錄復(fù)制(Test.txt 復(fù)制到 Test文件夾下面)  結(jié)果為(捕獲到 一次創(chuàng)建,兩次改變+一次文件夾改變):

【Created】c:\Test\Test.txt  被創(chuàng)建

【Changed】c:\Test\Test.txt  發(fā)生改變

【Changed】c:\Test\Test.txt  發(fā)生改變

【Changed】c:\Test  發(fā)生改變


3、非同級(jí)的剪切 粘貼(Test.txt 剪切到 Test 文件夾下)結(jié)果為(捕獲到 一次刪除  一次創(chuàng)建 一次文件夾改變):

【Deleted】c:\Test.txt  刪除

【Created】c:\Test\Test.txt  被創(chuàng)建

【Changed】c:\Test  發(fā)生改變


可以看出一個(gè)小問(wèn)題,對(duì)于未建立的文件,在創(chuàng)建時(shí)在創(chuàng)建后會(huì)出現(xiàn)兩次Changed,然而對(duì)于已經(jīng)存在的文件移動(dòng)在另一個(gè)目的地時(shí)沒(méi)有那“多余”的兩次Changed 這是為什么呢??


該文章在 2023/12/26 22:51:53 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved