【发布时间】:2011-04-04 10:28:59
【问题描述】:
我发现 C# 代码可以循环遍历我们指定的任何目录,我尝试将其转换为 C++/CLI 并使其循环遍历所有系统文件和文件夹。问题是代码让您确定需要扫描的深度级别!我需要的是让它循环所有文件和文件夹,无论深度如何......这就是我所做的......有一些例外!
#include "stdafx.h"
using namespace System;
using namespace System::IO;
ref class Scan {
public:
static int MaxPath=260000000;
static void ScanMyDir( String^ SourceDir,int RecursiveLevel) {
if(RecursiveLevel<=MaxPath) {
array <String^> ^fileEntries = Directory::GetFiles(SourceDir);
for each (String^ fileName in fileEntries) {
Console::WriteLine(fileName);
}
}
array<String^> ^SubDirEntries = Directory::GetDirectories(SourceDir);
for each (String^ subdir in SubDirEntries)
if ((File::GetAttributes(subdir) & FileAttributes::ReparsePoint)!= FileAttributes::ReparsePoint)
ScanMyDir(subdir,RecursiveLevel+1);
}
};
int main(array<System::String ^> ^args) {
Scan::ScanMyDir("c://",1);
Console::Read();
return 0;
}
经过一些修改(还是有一些错误):
using namespace System;
using namespace System::IO;
static void ScanMyDir( String^ SourceDir) {
array <String^> ^fileEntries = Directory::GetFiles(SourceDir);
for each (String^ fileName in fileEntries) {
Console::WriteLine(fileName);
}
array<String^> ^SubDirEntries = Directory::GetDirectories(SourceDir);
for each (String^ subdir in SubDirEntries)
if ((File::GetAttributes(subdir) & FileAttributes::ReparsePoint)!= FileAttributes::ReparsePoint)
ScanMyDir(subdir);
}
int main(array<System::String ^> ^args) {
try {
ScanMyDir("C://Windows");
}
catch {
Console::WriteLine("Some Denied files or Folders");
}
return 0;
}
这些是错误:
错误 1 错误 C2059:语法错误:'{' c:\Users\Ahmed\documents\visual studio 2010\Projects\eeee\eeee\eeee.cpp 31
错误 6 错误 C2059:语法错误:'}' c:\Users\Ahmed\documents\visual studio 2010\Projects\eeee\eeee\eeee.cpp 37
错误 8 错误 C2059:语法错误:'}' c:\Users\Ahmed\documents\visual studio 2010\Projects\eeee\eeee\eeee.cpp 37
错误 5 错误 C2059:语法错误:'return' c:\Users\Ahmed\documents\visual studio 2010\Projects\eeee\eeee\eeee.cpp 36
错误 4 错误 C2061:语法错误:标识符 'WriteLine' c:\Users\Ahmed\documents\visual studio 2010\Projects\eeee\eeee\eeee.cpp 32
错误 7 错误 C2143:语法错误:缺少 ';'在'}'之前 c:\Users\Ahmed\documents\visual studio 2010\Projects\eeee\eeee\eeee.cpp 37
错误 2 错误 C2309:catch 处理程序需要带括号的异常声明 c:\Users\Ahmed\documents\visual studio 2010\Projects\eeee\eeee\eeee.cpp 31
错误 3 错误 C2319:'catch' 必须后跟复合语句。缺少'{' c:\Users\Ahmed\documents\visual studio 2010\Projects\eeee\eeee\eeee.cpp 32
【问题讨论】:
标签: c# .net filesystems c++-cli