温馨提示×

c#遍历文件怎样处理异常

c#
小樊
81
2024-11-27 03:57:40
栏目: 编程语言

在C#中,遍历文件并处理异常时,可以使用try-catch语句来捕获和处理可能发生的异常。以下是一个简单的示例,展示了如何使用try-catch语句遍历文件夹并处理异常:

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string folderPath = @"C:\example_folder"; // 替换为你要遍历的文件夹路径

        try
        {
            // 获取文件夹中的所有文件和子文件夹
            DirectoryInfo directoryInfo = new DirectoryInfo(folderPath);
            DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
            FileSecurity fileSecurity = null;
            foreach (FileSystemInfo fileSystemInfo in directoryInfo.GetFileSystemInfos("*", SearchOption.AllDirectories))
            {
                // 如果是文件,处理文件
                if (fileSystemInfo is FileInfo)
                {
                    FileInfo fileInfo = (FileInfo)fileSystemInfo;
                    ProcessFile(fileInfo);
                }
                // 如果是文件夹,递归遍历子文件夹
                else if (fileSystemInfo is DirectoryInfo)
                {
                    DirectoryInfo subDirectoryInfo = (DirectoryInfo)fileSystemInfo;
                    ProcessDirectory(subDirectoryInfo);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("An error occurred while processing the files: " + ex.Message);
        }
    }

    static void ProcessFile(FileInfo fileInfo)
    {
        try
        {
            // 在这里处理文件,例如读取文件内容、修改文件等
            Console.WriteLine($"Processing file: {fileInfo.FullName}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred while processing the file '{fileInfo.FullName}': " + ex.Message);
        }
    }

    static void ProcessDirectory(DirectoryInfo directoryInfo)
    {
        try
        {
            // 遍历子文件夹
            foreach (FileSystemInfo fileSystemInfo in directoryInfo.GetFileSystemInfos("*", SearchOption.AllDirectories))
            {
                // 如果是文件,处理文件
                if (fileSystemInfo is FileInfo)
                {
                    FileInfo fileInfo = (FileInfo)fileSystemInfo;
                    ProcessFile(fileInfo);
                }
                // 如果是文件夹,递归遍历子文件夹
                else if (fileSystemInfo is DirectoryInfo)
                {
                    DirectoryInfo subDirectoryInfo = (DirectoryInfo)fileSystemInfo;
                    ProcessDirectory(subDirectoryInfo);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred while processing the directory '{directoryInfo.FullName}': " + ex.Message);
        }
    }
}

在这个示例中,我们首先尝试获取指定文件夹中的所有文件和子文件夹。然后,我们使用try-catch语句遍历这些文件和子文件夹,并在try块中处理它们。如果在处理过程中发生异常,catch块将捕获异常并输出错误信息。

0