目录无法正常阅读

时间:2012-05-31 10:01:36

标签: c# asp.net

我有一个目录

C:\ Kuldeep \ kverma \ kver \

之后它包含数千个具有不同名称的文件夹。每个文件夹包含不同的Excel文件。我需要阅读不同文件夹中的每个文件。

我想从C:\ Kuldeep \ kverma \ kver \ Folder中读取所有文件夹路径。

我使用下面的代码来获取带路径的文件夹名称..

        string path = @"C:\Kuldeep\kverma\kver\";
        DirectoryInfo dir = new DirectoryInfo(path);
        Console.WriteLine("File Name Size Creation Date and Time");
                                                                                                   Console.WriteLine("========");

        foreach (DirectoryInfo dirinfo in dir.GetDirectories())
        {
            String name = dirinfo.Name;
            String pth = dirinfo.FullName;
            Console.WriteLine( name, pth);
       }

C:\ Kuldeep \ kverma \ kver \目录中共有10700个文件夹但是它只能读取54个文件夹..

请为我提供阅读文件夹名称和位置的任何解决方案。同时从单个镜头中的每个文件夹中读取文件。

3 个答案:

答案 0 :(得分:1)

您应该在GetDirectories调用周围进行try catch以处理以下帖子中的异常。

这可能会让你知道为什么它没有正确枚举。

http://msdn.microsoft.com/en-us/library/c1sez4sc.aspx

答案 1 :(得分:0)

尝试递归方法:

namespace ConsoleApplication1
{
    using System;
    using System.Collections.Generic;
    using System.IO;

    class Program
    {
        public static IList<DirectoryInfo> dirs;

        static void Main(string[] args)
        {
            dirs = new List<DirectoryInfo>();

            var dir = new DirectoryInfo(@"c:\tmp");

            GetDirs(dir);
            Console.WriteLine(dirs.Count);
        }

        public static void GetDirs(DirectoryInfo root)
        {
            foreach (var directoryInfo in root.GetDirectories())
            {
                dirs.Add(directoryInfo);
                GetDirs(directoryInfo);
            }
        }
    }
}

现在我不确定潜在的隐藏危险是什么(堆栈溢出异常,访问被拒绝?)所以我建议在try..catch循环中放置一个foreach块来帮助你出去了。

答案 2 :(得分:0)

如果要查看每个子目录的内容:

// Flatten out the directory structure in to a string array.
var directoryList = Directory.GetDirectories("<<RootPath>>", "*", SearchOption.AllDirectories);

foreach (var directory in directoryList)
{
  DirectoryInfo info = new DirectoryInfo(directory);
}

编辑并更新了问题代码:

    string path = @"C:\Kuldeep\kverma\kver\";
    string[] directoryArray = Directory.GetDirectories(path, "*", SearchOption.AllDirectories);

    foreach (var directory in directoryArray)
    {
        DirectoryInfo dirinfo = new DirectoryInfo(directory);
        String name = dirinfo.Name;
        String pth = dirinfo.FullName;
        Console.WriteLine(name, pth);
    }