目录未正确读取

本文关键字:读取 | 更新日期: 2023-09-27 18:35:47

我有一个目录

C:''Kuldeep''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个文件夹。

请为我提供读取文件夹名称和位置的任何解决方案 也从单次读取每个文件夹中的文件 .

目录未正确读取

您应该在 GetDirectory 调用周围放置一个尝试捕获来处理下面帖子中的异常。

这可能会为您提供有关为什么它没有正确枚举的线索。

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

尝试递归方法:

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);
            }
        }
    }
}

现在我不确定可能因此潜伏着什么隐患(堆栈溢出异常,访问被拒绝?),所以我建议在foreach循环中放置一个try..catch块来帮助你。

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

// 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);
    }