0

我有一个目录

C:\库尔迪普\kverma\kver\

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

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

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

        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 个文件夹..

请为我提供任何解决方案,以读取文件夹名称和位置以及从 Single Shot 中的每个文件夹中读取文件。

4

3 回答 3

1

您应该在 GetDirectories 调用周围放置一个 try catch 以处理以下帖子中的异常。

这可能会给你一个线索,说明为什么它没有正确枚举。

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

于 2012-05-31T10:07:18.907 回答
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);
    }
于 2012-05-31T10:57:53.720 回答
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来帮助你。

于 2012-05-31T10:13:09.670 回答