最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#刪除文件夾里的所有文件的實現方案

 更新時間:2025年12月29日 08:48:24   作者:StevenChen85  
你需要在 C# 中實現刪除指定文件夾內所有文件的功能,下面會提供多種適配不同場景的實現方案,包含基礎用法、安全用法及進階需求,同時規(guī)避常見坑點,需要的朋友可以參考下

一、 基礎方案:刪除文件夾內所有文件(保留子文件夾)

適用于僅刪除目標文件夾下直接存放的文件,不刪除子文件夾及其內部文件的場景,核心使用 System.IO 命名空間的 API。

核心 API 說明

  1. Directory.GetFiles(string path):獲取指定文件夾下所有直接文件的完整路徑(返回 string[] 數組)。
  2. File.Delete(string filePath):刪除單個指定文件,需處理文件占用等異常。

實現代碼

using System;
using System.IO;
 
namespace DeleteFolderFiles
{
    class BasicDelete
    {
        /// <summary>
        /// 刪除指定文件夾內所有直接文件(保留子文件夾)
        /// </summary>
        /// <param name="folderPath">目標文件夾路徑</param>
        public static void DeleteAllFilesInFolder(string folderPath)
        {
            // 1. 驗證文件夾是否存在,避免路徑錯誤
            if (!Directory.Exists(folderPath))
            {
                Console.WriteLine($"錯誤:文件夾 {folderPath} 不存在!");
                return;
            }
 
            try
            {
                // 2. 獲取文件夾內所有直接文件的路徑
                string[] allFiles = Directory.GetFiles(folderPath);
 
                // 3. 遍歷并刪除每個文件
                foreach (string filePath in allFiles)
                {
                    // 確保文件存在(避免并發(fā)場景下文件已被刪除)
                    if (File.Exists(filePath))
                    {
                        File.Delete(filePath);
                        Console.WriteLine($"成功刪除文件:{filePath}");
                    }
                }
 
                Console.WriteLine("所有文件刪除完成!");
            }
            catch (UnauthorizedAccessException ex)
            {
                Console.WriteLine($"錯誤:沒有權限刪除文件 - {ex.Message}");
            }
            catch (IOException ex)
            {
                Console.WriteLine($"錯誤:文件被占用或無法刪除 - {ex.Message}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"未知錯誤:{ex.Message}");
            }
        }
 
        // 調用示例
        static void Main(string[] args)
        {
            // 目標文件夾路徑(可改為絕對路徑,如 @"D:\TestFolder")
            string targetFolder = @"TestFolder";
            DeleteAllFilesInFolder(targetFolder);
        }
    }
}

二、 進階方案 1:刪除文件夾內所有文件(包含子文件夾文件)

適用于需要遞歸刪除目標文件夾下所有文件(含子文件夾內文件),僅保留文件夾結構(不刪除任何文件夾)的場景。

核心 API 說明

Directory.GetFiles(string path, string searchPattern, SearchOption searchOption)

  • searchPattern:文件篩選模式,"*.*" 匹配所有文件。
  • SearchOption.AllDirectories:遞歸搜索所有子目錄(TopDirectoryOnly 僅搜索當前目錄,對應基礎方案)。

實現代碼

using System;
using System.IO;
 
namespace DeleteFolderFiles
{
    class RecursiveDeleteFiles
    {
        /// <summary>
        /// 遞歸刪除文件夾內所有文件(包含子文件夾文件,保留文件夾結構)
        /// </summary>
        /// <param name="folderPath">目標文件夾路徑</param>
        public static void DeleteAllFilesRecursively(string folderPath)
        {
            if (!Directory.Exists(folderPath))
            {
                Console.WriteLine($"錯誤:文件夾 {folderPath} 不存在!");
                return;
            }
 
            try
            {
                // 遞歸獲取所有文件(當前目錄+所有子目錄)
                string[] allFiles = Directory.GetFiles(
                    folderPath, 
                    "*.*", 
                    SearchOption.AllDirectories
                );
 
                // 批量刪除
                foreach (string filePath in allFiles)
                {
                    if (File.Exists(filePath))
                    {
                        // 可選:設置文件為正常屬性(避免只讀文件無法刪除)
                        File.SetAttributes(filePath, FileAttributes.Normal);
                        File.Delete(filePath);
                        Console.WriteLine($"成功刪除文件:{filePath}");
                    }
                }
 
                Console.WriteLine("所有文件(含子文件夾文件)刪除完成!");
            }
            catch (UnauthorizedAccessException ex)
            {
                Console.WriteLine($"權限錯誤:{ex.Message}");
            }
            catch (IOException ex)
            {
                Console.WriteLine($"文件占用錯誤:{ex.Message}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"未知錯誤:{ex.Message}");
            }
        }
 
        // 調用示例
        static void Main(string[] args)
        {
            string targetFolder = @"D:\TestFolder";
            DeleteAllFilesRecursively(targetFolder);
        }
    }
}

三、 進階方案 2:刪除文件夾(含所有文件 + 子文件夾)+ 重建空文件夾

適用于需要徹底清空文件夾(刪除所有文件和子文件夾),最終保留一個空的目標文件夾的場景,比遞歸刪除文件更高效。

核心 API 說明

  1. Directory.Delete(string path, bool recursive)
    • recursive: true:遞歸刪除目標文件夾及其所有子文件夾、文件。
    • recursive: false:僅刪除空的目標文件夾。
  2. Directory.CreateDirectory(string path):創(chuàng)建文件夾(若文件夾已存在,不會拋出異常,直接返回現有文件夾信息)。

實現代碼

using System;
using System.IO;
 
namespace DeleteFolderFiles
{
    class DeleteAndRecreateFolder
    {
        /// <summary>
        /// 徹底清空文件夾(刪除文件+子文件夾),重建空文件夾
        /// </summary>
        /// <param name="folderPath">目標文件夾路徑</param>
        public static void ClearFolderCompletely(string folderPath)
        {
            try
            {
                // 1. 若文件夾存在,遞歸刪除(含所有文件和子文件夾)
                if (Directory.Exists(folderPath))
                {
                    Directory.Delete(folderPath, true);
                    Console.WriteLine($"已刪除文件夾:{folderPath}");
                }
 
                // 2. 重建空文件夾
                Directory.CreateDirectory(folderPath);
                Console.WriteLine($"已重建空文件夾:{folderPath}");
            }
            catch (UnauthorizedAccessException ex)
            {
                Console.WriteLine($"權限錯誤:無法刪除/創(chuàng)建文件夾 - {ex.Message}");
            }
            catch (IOException ex)
            {
                Console.WriteLine($"IO錯誤:文件夾被占用 - {ex.Message}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"未知錯誤:{ex.Message}");
            }
        }
 
        // 調用示例
        static void Main(string[] args)
        {
            string targetFolder = @"D:\TestFolder";
            ClearFolderCompletely(targetFolder);
        }
    }
}

四、 關鍵注意事項(避坑指南)

  1. 路徑格式
    • C# 中文件夾路徑推薦使用 @ Verbatim 字符串(如 @"D:\TestFolder"),避免轉義字符(\)沖突。
    • 支持相對路徑(如 @"TestFolder")和絕對路徑(如 @"D:\TestFolder"),相對路徑對應程序運行目錄。
  2. 異常處理
    • 必須捕獲 UnauthorizedAccessException(權限不足)和 IOException(文件 / 文件夾被占用、只讀文件等)。
    • 避免因單個文件刪除失敗導致整個批量操作中斷(可在循環(huán)內添加 try-catch 單獨處理單個文件)。
  3. 只讀文件處理
    • 若文件為「只讀屬性」,直接調用 File.Delete 會拋出異常,需先通過 File.SetAttributes(filePath, FileAttributes.Normal) 重置文件屬性。
  4. 并發(fā)安全
    • 若存在多線程 / 多進程操作同一文件夾,需先通過 File.Exists(filePath) 驗證文件是否存在,避免刪除已被其他進程刪除的文件。
  5. 謹慎操作
    • 刪除操作不可逆,建議在正式刪除前添加日志輸出或備份邏輯,避免誤刪重要文件。
    • 切勿操作系統(tǒng)關鍵文件夾(如 C:\Windows),可能導致系統(tǒng)異常。

總結

  1. 僅刪當前文件夾文件(保留子文件夾):使用 Directory.GetFiles(folderPath) + 遍歷 File.Delete。
  2. 刪所有文件(含子文件夾文件,保留文件夾結構):使用 Directory.GetFiles(..., SearchOption.AllDirectories) + 遞歸刪除。
  3. 徹底清空文件夾(重建空文件夾):使用 Directory.Delete(folderPath, true) + Directory.CreateDirectory(folderPath),效率最高。
  4. 安全要點:添加異常處理、驗證路徑存在、處理只讀文件、避免誤刪系統(tǒng)文件。

到此這篇關于C#刪除文件夾里的所有文件的實現方案的文章就介紹到這了,更多相關C#刪除文件夾所有文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 用C#將圖片保存至Oracle BLOB字段中的方法

    用C#將圖片保存至Oracle BLOB字段中的方法

    這篇文章主要介紹了用C#將圖片保存至Oracle BLOB字段中的方法, 依靠ImageViewer庫進行操作,需要的朋友可以參考下
    2015-07-07
  • C#?wpf利用附加屬性實現界面上定義裝飾器

    C#?wpf利用附加屬性實現界面上定義裝飾器

    裝飾器是wpf中可以浮在控件上面的一種組件,我們通常可以用來實現一些諸如控件拖動點、提示框、自定義鼠標等界面功能。本文主要是利用附加屬性實現界面上定義裝飾器,需要的可以參考下
    2022-12-12
  • C# 創(chuàng)建Excel氣泡圖的實例代碼

    C# 創(chuàng)建Excel氣泡圖的實例代碼

    這篇文章主要介紹了C# 創(chuàng)建Excel氣泡圖的實例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • C#自定義序列化ISerializable的實現方法

    C#自定義序列化ISerializable的實現方法

    這篇文章主要介紹了C#自定義序列化ISerializable的實現方法,涉及C#序列化的操作技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • c#與mysql的連接

    c#與mysql的連接

    c#與mysql的連接...
    2007-03-03
  • 使用C#實現AES加密與解密的示例

    使用C#實現AES加密與解密的示例

    在現代應用程序中,數據加密是保護敏感信息安全的重要手段,AES(高級加密標準)是一種廣泛使用的對稱加密算法,提供強大的數據保護功能,今天,我將為大家展示如何使用 C# 實現 AES 加密和解密,需要的朋友可以參考下
    2024-12-12
  • 如何在C#中使用只讀的 Collections

    如何在C#中使用只讀的 Collections

    這篇文章主要介紹了如何在C#中使用只讀的 Collections,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-04-04
  • 淺析C#中不同格式請求的區(qū)別

    淺析C#中不同格式請求的區(qū)別

    form-data?請求和?x-www-form-urlencoded?請求是兩種常見的?HTTP?請求體格式,這篇文章主要為大家詳細介紹了二者的區(qū)別與應用,希望對大家有所幫助
    2023-08-08
  • C#設置自定義文件圖標實現雙擊啟動(修改注冊表)

    C#設置自定義文件圖標實現雙擊啟動(修改注冊表)

    這篇文章介紹的是利用C#設置自定義文件圖標,然后實現雙擊啟動的功能,文章給出了示例代碼,介紹的很詳細,有需要的可以參考借鑒。
    2016-08-08
  • .NET使用C#導入Excel文件數據到數據庫

    .NET使用C#導入Excel文件數據到數據庫

    將Excel文件中的數據導入到數據庫中不僅能夠提升數據處理的效率和準確性,還能極大地促進數據分析和決策制定的過程,本文將介紹如何在.NET平臺使用C#導入Excel文件數據到數據庫中,需要的可以參考下
    2024-12-12

最新評論

新巴尔虎右旗| 荥阳市| 怀来县| 弥勒县| 吉水县| 德江县| 阜康市| 民和| 兰西县| 宁陕县| 宁都县| 湖北省| 军事| 新巴尔虎左旗| 顺平县| 南靖县| 大化| 西乌珠穆沁旗| 惠东县| 新邵县| 峡江县| 三穗县| 大姚县| 江西省| 静海县| 区。| 滨州市| 正镶白旗| 昭苏县| 灵宝市| 新平| 美姑县| 鄂伦春自治旗| 伊通| 永兴县| 英吉沙县| 马尔康县| 奈曼旗| 德阳市| 朔州市| 德化县|