.net 奇怪的问题,文件神出鬼没

czcwzw 2010-01-20 10:26:21
环境:.net2005,C++托管工程
假设:在C盘的A目录下有3个文件:1.c,2.c,3.c
然后调用Test时候,传递参数为C:\A
int Test(DirectoryInfo^ directory)
{
int i;
bool result;

array <FileInfo^>^fileInfoArray = directory->GetFiles("*.c");

for(i=0;i <fileInfoArray->GetLength(0);i++){

result = holteckTest(fileInfoArray[i]); //在这个函数里面会启动另一个进程来运行一个程序,当这个进程结束时该函数才返回.
if(result)
hitechTest(fileInfoArray[i]); //在这个函数里面会启动另一个进程来运行一个程序,当这个进程结束时该函数才返回.
}
array <DirectoryInfo^>^directoryInfoArray = directory->GetDirectories();

for(i=0;i <directoryInfoArray->GetLength(0);i++) //递归调用遍历该目录下的所有子目录
Test(directoryInfoArray[i]);
}
补充:在调用holteckTest函数时,会启动另一个进程来运行一个程序,而这个程序会生成某个临时文件,用完后在删除.比如对1.c进行调用时,
会生成临时文件1_cpp.c.

现象:按道理Test只会对1.c,2.c,3.c进行遍历,但是运行时发现有时候会对生成的临时文件也进行遍历,但是这个代码是先调用
directory->GetFiles("*.c");获得当前目录下的所有文件,然后通过循环进行遍历,即使在这个过程中有生成临时文件,那么也不会
被遍历到,但实际上确实被遍历到了,这个到底是怎么回事?????
...全文
58 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
czcwzw 2010-01-20
  • 打赏
  • 举报
回复
不知道有没有这种东西,fileInfoArray 数组可以实时的反应当前目录下的所有文件,当文件变动时,这个数组也跟着变
czcwzw 2010-01-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dirdirdir3 的回复:]
按你程序的逻辑并不是这样,如果要先获得所有文件,可以考虑先建立一个文件名列表,遍历填写这个列表,然后按列表来test.......
[/Quote]

怎么不是呢?
array <FileInfo^>^fileInfoArray = directory->GetFiles("*.c"); 就是先获得当前目录下的所有文件.
完了之后才往下走,就算是生成的临时文件,也不应该被调用
我在地球 2010-01-20
  • 打赏
  • 举报
回复
生成的临时文件也会遍历
lllyyy2403 2010-01-20
  • 打赏
  • 举报
回复
哎,看起来托管C++与本地代码的C++差别还不少,也许用C#还更好些呢。
不说害怕 2010-01-20
  • 打赏
  • 举报
回复
遍历?
查找文件的过程肯定有遍历啊.
dirdirdir3 2010-01-20
  • 打赏
  • 举报
回复
按你程序的逻辑并不是这样,如果要先获得所有文件,可以考虑先建立一个文件名列表,遍历填写这个列表,然后按列表来test.......

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧