我有一个目录
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个文件夹..
请为我提供阅读文件夹名称和位置的任何解决方案。同时从单个镜头中的每个文件夹中读取文件。
答案 0 :(得分:1)
您应该在GetDirectories调用周围进行try catch以处理以下帖子中的异常。
这可能会让你知道为什么它没有正确枚举。
答案 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);
}