我有以下代码,基于http://msdn.microsoft.com/en-us/library/07wt70x2.aspx的示例
void ProcessDirectory( String^ targetDirectory )
{
if (Directory::Exists( targetDirectory )) {
printf("Directory : %s\n", targetDirectory);
// Recurse into subdirectories of this directory.
array<String^>^subdirectoryEntries = Directory::GetDirectories( targetDirectory );
IEnumerator^ dirs = subdirectoryEntries->GetEnumerator();
while ( dirs->MoveNext() )
{
String^ subdirectory = safe_cast<String^>(dirs->Current);
ProcessDirectory( subdirectory );
}
}
}
int main(int argc, char **argv)
{
ProcessDirectory( "C:\\" );
}
这应该是(我认为)通过我的硬盘驱动器上的目录进行的简单递归迭代,但它一直在说路径太长而崩溃。
它们看起来太长的原因是当它到达应用程序数据时,它开始重复应用程序数据目录名称。错误如下,非常感谢任何帮助,因为我被卡住了:(:
目录:C:\Documents and Settings\All Users\Application Data\Application Dat a\应用程序数据\应用程序数据\应用程序数据\应用程序数据\应用程序 n 数据\应用程序数据\应用程序数据\应用程序数据\Adobe\CameraRaw\Camera 配置文件\相机\佳能 EOS 1000D 未处理的异常:System.IO.PathTooLongException:指定的路径,文件名 我,或者两者都太长了。完全限定的文件名必须小于 260 ch aracters,并且目录名称必须少于 248 个字符。 在 System.IO.Path.NormalizePath(字符串路径,布尔 fullCheck,Int32 maxPath 长度) 在 System.IO.Path.GetDirectoryName(字符串路径) 在 System.IO.FileSystemEnumerableIterator`1..ctor(String path, String origina lUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler` 1 个结果处理程序)