2

这是我的班级,他们从每个目录返回最新文件,问题是尽管我将代码放在 Try - Catch 块中,但我仍然收到路径被拒绝的错误

public class NewestFiles
{
    //public event EventHandler newFileEventHandler;

    // Dictionary: 
    //   Key = The directory name.
    //   Value = The most recently modified file for that directory.
    private Dictionary<string, string> GetNewestFiles(string directory, Dictionary<string, string> dictionary)
    {
        if (dictionary == null)
            dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);

        try
        {
            var files = from file in Directory.GetFiles(directory, "*.*")
                        select new FileInfo(file);

            var latestFile = files.OrderByDescending(file => { return file.LastWriteTimeUtc; }).FirstOrDefault();

            if (latestFile != null)
                dictionary[latestFile.DirectoryName] = latestFile.FullName;
        }
        catch(Exception)
        { }

        foreach (var subDirectory in Directory.GetDirectories(directory))
        {
            try
            {
                GetNewestFiles(subDirectory, dictionary);
            }
            catch { }
        }

        return dictionary;
    }

    public Dictionary<string, string> GetNewestFiles(string directory)
    {
        return GetNewestFiles(directory, null);
    }
}
4

2 回答 2

0

尽管我将代码放入 Try - Catch 块中,但我仍然收到路径被拒绝的错误

尝试 catch 不会阻止错误,它们只会捕获异常,以便在发生不好的情况时以一种很好的方式处理

现在你的错误

访问路径被拒绝异常

由于错误本身表明您无权访问您尝试读取的文件/目录。或者如果您自己编写了该文件(从您的代码中可以看出),您可能没有正确关闭编写器。

于 2013-08-21T08:18:49.187 回答
0

通常当你得到access to the path is denied exception它意味着其他一些程序正在保存该文件。当您处理文件、流或数据库时,您应该使用该using语句以防止不关闭流。

但是,有一些方法可以强制获取文件,或者至少找出锁定它的进程。在这里你可以看到如何开始使用它

于 2013-08-21T08:41:32.963 回答