FileSystemWatcher判斷檔案複製完成

2021-06-20 22:07:53 字數 2420 閱讀 1796

使用 filesystemwatcher 監視指定目錄中的更改。可監視指定目錄中的檔案或子目錄的更改。該元件可以監視本地計算機、網路驅動器或遠端計算機上的檔案。

可監視目錄或檔案中的若干種更改。例如,可監視檔案或目錄的 attributes、lastwrite 日期和時間或 size 方面的更改。通過設定filesystemwatcher.notifyfilter屬性。

可監視檔案或目錄的重新命名、刪除或建立。例如,若要監視文字檔案的重新命名,請將 filter 屬性設定為「*.txt」。注意   公共檔案系統操作可能會引發多個事件。例如,將檔案從乙個目錄移到另乙個目錄時,可能會引發若干 onchanged 以及一些 oncreated 和 ondelete事件。移動檔案是乙個包含多個簡單操作的複雜操作,因此會引發多個事件。同樣,一些應用程式(如反病毒軟體)可能導致被 filesystemwatcher 檢測到的附加檔案系統事件。

注意filesystemwatcher.notifyfilter 屬性設定的監視和事件(onchanged,oncreated,ondelete等事件)是and的關係。

例子程式:

public class watcher

// create a new filesystemwatcher and set its properties.

filesystemwatcher watcher = new filesystemwatcher();

watcher.path = args[1];

/* watch for changes in lastaccess and lastwrite times, and

the renaming of files or directories. */

watcher.notifyfilter = notifyfilters.lastaccess | notifyfilters.lastwrite

| notifyfilters.filename | notifyfilters.directoryname;

// only watch text files.

watcher.filter = "*.txt";

// add event handlers.

watcher.changed += new filesystemeventhandler(onchanged);

watcher.created += new filesystemeventhandler(onchanged);

watcher.deleted += new filesystemeventhandler(onchanged);

watcher.renamed += new renamedeventhandler(onrenamed);

// begin watching.

watcher.enableraisingevents = true;

//suspend the calling thread until the file has been created

waitforchangedresult cr= watcher.waitforchanged(watcherchangetypes.created);

// wait for the user to quit the program.

console.writeline("press /'q/' to quit the sample.");

while(console.read()!='q');

} // define the event handlers.

private static void onchanged(object source, filesystemeventargs e)

private static void onrenamed(object source, renamedeventargs e)

renamed to ", e.oldfullpath, e.fullpath);

} }

但是,在實際使用過程中,由於需要監視的檔案,必須在複製完成後才能進行後續工作,所以在監視時,需要不斷進行判斷,判斷檔案是否複製完成。所以修改

private static void onchanged(object source, filesystemeventargs e)

console.writeline(fi.isreadonly.tostring());

//if (!fi.isreadonly)

//catch (ioexception  ex)

onrmchanged(e.fullpath);//對檔案進行任意處理

}最後等複製完成再對檔案進行操作如下

private static void onrmchanged(string mypath)

//對檔案進行任意處理

根據該文章改造成我自己的檔案監控器,哈哈

java判斷完數

題目 乙個數如果恰好等於它的因子之和,這個數就稱為 完數 例如6 1 2 3.程式設計 找出1000以內的所有完數 資料 因子就是所有可以整除這個數的數,不包括這個數自身.因數包括這個數本身而因子不包括,如 比如15的因子是1,3,5 而因數為1,3,5,15.完數是指此數的所有因子之和等於此數,例...

c 如何判斷webbrowser已經載入完畢

最近有個小程式需要採集網頁源 但有的網頁中js指令碼又會生成額外的 比如 紅框部分便是另外載入的 此處可以看到web前端是有 作業系統 幾個字的,但檢視網頁源 之後卻搜不到這幾個字 c 有個webbrowser控制項可以等網頁載入完之後獲取瀏覽器上所有的網頁源 也包括額外被js載入進來的 第一次 試...

題目 1017 程式設計入門 完數的判斷

題目描述乙個數如果恰好等於不包含它本身所有因子之和,這個數就稱為 完數 例如,6的因子為1 2 3,而6 1 2 3,因此6是 完數 程式設計序找出n 1000之內的所有完數,並按下面格式輸出其因子。解題思路 本題需要逐個數的去判斷是否是完數,如果是再輸出其因子。部分 先設定乙個for迴圈,然後在設...