还是用api吧 我还确实不清楚是不是标准C库里面的,而且这一系列的函数都是以“_”开头的。 来个JAVA版本的吧,支持正则式:
import java.io.*;
import java.util.regex.*;
/**
*@author Eastsun
*@version 1.0 12/8/2006
*/
public class SearchFile{
/**
*@param dir 搜索进行的根目录
*@param p 文件名匹配的模式
*@param out 负责输出搜索结果PrintStream
*/
public static int searchFile(File dir,Pattern p,PrintStream out)throws IOException{
int count =0;
if(dir.isDirectory()){
File[] list =dir.listFiles();
if(list==null) return 0;
for(int n=0;n<list.length;n++){
if(list.isDirectory()) count +=searchFile(list,p,out);
else if(p.matcher(list.getName()).matches()){
out.println(list.getCanonicalPath());
count++;
}
}
}
return count;
}
public static void main(String[] args)throws IOException{
File root =null;
Pattern p =null;
PrintStream out =null;
if(args.length==3){
root =new File(args); //搜索的根目录
p =Pattern.compile(args); //匹配模式
out =new PrintStream(new File(args)); //将搜索结果保存到文件名为args的文件中
}
else{
root =new File("e:\\"); //搜索的根目录为e:盘
p = Pattern.compile(".*\\.lav");//搜索所有的lav文件
out =System.out; //直接在控制台上显示搜索结果
}
System.out.println("Searching..");
int count =searchFile(root,p,out);
System.out.println("Find "+count+" files");
}
} 匹配所有文件名的正则式是: Pattern p =Pattern.compile(".+"); 递归啊递归,不过感觉listFile函数有些无耻... LZ的代码貌似只把C盘根目录下的文件打印出来,而不是把C盘所有的文件打印出来? 对,我说了是C盘根目录的,没有子目录的递归。 JAY,一进来,第一眼就看到你了!
我还是第一次来这里,但是却一下载看到好多熟悉的名字,Lee(leesoft就是Lee本人吗?),FantasyDR,LOJA,曾半仙,任我狂
又记起当初的文曲星年代了,响起当时天天上课扒在桌子上汇编,LAVA的情景了~
顶个~ leesoft就是Lee
这里不让注册Lee,真不爽 --||原来还有这么一回事。。。。。。
遍历指定目录下文件名
使用_findfirst, _findnext, _findclose三个函数可以遍历指定目录下的所有文件,然后通过判断文件的属性(文档,目录,系统,只读,隐藏,普通)来进行相应的操作,下面这个代码就可以打印出C盘根目录下的所有文件。#include <stdio.h>
#include <io.h>
void main()
{
intptr_t findHandle; // 查找文件句柄
char fileSpec[] = "C:\\*.*"; // 查找文件条件
struct _finddata_t fileInfo; // 文件信息
findHandle = _findfirst(fileSpec, &fileInfo); // 开始查找
if (findHandle != -1) // 找到文件
{
printf("Files found below:\n");
do
{
if (fileInfo.attrib & _A_ARCH) // 如果是文档,输出文件名
{
printf("%s\n", fileInfo.name);
}
}while(_findnext(findHandle, &fileInfo) != -1); // 查找下一个文件
}
else
{
printf("No file found\n"); // 没有找到任何文件
}
_findclose(findHandle); // 关闭查找
}
页:
[1]