Sign in with Microsoft
New to Microsoft? Create an account.

關於作者:

本文由微軟最有價值專 MVP 謝銘恩 提供。微軟十分感謝 MVP 主動地將他們的經驗與上百萬名其他技術使用者交流。MVP 謝銘恩 同時也將此篇文章放在他的部落格內,歡迎您按 此處 瀏覽 MVP 謝銘恩 更多的技術文章、經驗分享與觀點。

問題的來龍去脈

通常在程式設計時,針對單一條件指定檔案皆可進行刪除等檔案作業,而若是在很多檔案又同時要篩選出檔案建立之特定時間之前的檔案進行存取時,此時附予的設計方式就要略為異動,針對此簡易地參考下圖程式範例。





上圖除先選取特定的目錄匣外,於 ① 處可先行設定篩選時間條件,接者在 ② 處可設定要篩選的附檔名格式,最後按下進行篩選】按鈕 ,即可看到如上圖 ③ 之結果。

同樣地,與上圖做一比較,若當篩選時間的條件更改為 2004年7月6日 時 ( 即下圖 ① ),自然而然地只會篩選出單一一筆結果,如下圖 ② 所示。





問題的發生原因

欲找尋特定建立時間之前的檔案及指定之副檔格式時。

問題的解決方法

1. 新增一專案,並選取【Visual C#】,再選擇【Windows Form 應用程式】,然後再輸入名稱,最後再按下【確定】按鈕。





2. 請建立一個如下圖之【使用者介面表單】(UI)。




上圖特別控制項說明如下:

①處: TextBox 控制項,Enable 屬性設為 false,Name 屬性設為 txtFolderPath。
②處: Button 控制項,Name 屬性設為 btnFolderChoice,Text 屬性設為 選取。
③處: DataTimePicker 控制項, Name 屬性為 dateTimePicker1。
④處: TextBox 控制項,Name 屬性設為 txtExtension。
⑤處: Button 控制項,Name 屬性設為 btnProcess,Text 屬性設為 進行篩選。
⑥處: ListBox 控制項,Name 屬性設為 listBox1。
⑦處:Button 控制項,Name 屬性設為 btnDeletFiles,Text 屬性設為  刪除清單中的所有檔案。

3. 另外再加入一個 FolderBrowserDialog 控制項 (可從工具箱中 / 對話方塊 中找到 ),Name 屬性使用預設 folderBrowserDialog1 即可。





4. 在 btnFolderChoice 按鈕中的 Click 事件加入如下的程式碼:


        private void btnFolderChoice_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
txtFolderPath.Text = folderBrowserDialog1.SelectedPath;
}
}


5. 在 btnProcess 按鈕中的 Click 事件加入如下的程式碼:

        private void btnProcess_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();

string[] arrFiles = null;
//取得目錄下的檔案
arrFiles = Directory.GetFiles(txtFolderPath.Text);
//每一個檔案一一取得並解析
foreach (string SingleFiles in arrFiles)
{
// 判斷檔案是否比設定的時間還要早
if (dateTimePicker1.Value >= File.GetLastAccessTime(SingleFiles))
{
//建立一個 FileInfo 物件
FileInfo fi =new FileInfo(SingleFiles);
//檢查檔案副檔名是否為指定的格式
if (fi.Extension == txtExtension.Text)
{
//把符合條件者加入清單中
listBox1.Items.Add(SingleFiles);
}
}
}
}


6. 最後在 btnDeletFiles 按鈕中的 Click 事件加入如下的程式碼:

        private void btnDeletFiles_Click(object sender, EventArgs e)
{
foreach (string FileList in listBox1.Items)
{
File.Delete(FileList); //刪除檔案
}
listBox1.Items.Clear();
MessageBox.Show("刪除完成!");
}


請讓我們知道

還滿意我們寫的內容嗎?無論您是遇到了以下任何一種情況:
「太好了!問題解決了。」
「問題沒有解決,我有更好的建議。」
都歡迎您利用本篇文章底部的意見調查表,寫下您寶貴的意見。也期待您的鼓勵,讓我們為您創造更多實用的技術文章。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×