目录未正确读取
本文关键字:读取 | 更新日期: 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);
}