1

我有以下代码,基于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 个结果处理程序)
4

0 回答 0