程序员人生 网站导航

windows linux―unix 跨平台通信集成控制系统----文件搜索

栏目:php教程时间:2015-01-14 08:26:57

跨平台的网络通讯,跟装备的集成控制,牵扯到在各种平台下的文件搜索问题,windows下面的已有了。

地址以下:

http://blog.csdn.net/wangyaninglm/article/details/8668132

 

这篇文章主要介绍1下linux下面的文件搜索实现:

Filesearch.h

// // Filesearch.h // // // Created by mac mac on 13⑷⑵8. // Copyright (c) 2013年 __MyCompanyName__. All rights reserved. // #ifndef _Filesearch_h #define _Filesearch_h //#include <stdio.h> //#include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <dirent.h> #include <pwd.h> #include <unistd.h> //#include <string.h> #include <time.h> #include "mac.h" #include "Socket.h" //#define MAX_PATH 255 int IsDir(char *name); void Search_File(char *path,char *name); //int search_flag = 0; /* int main(int argc , char *argv[]) { static char *current_dir; static char *file_name; int length; if(argc==1) { printf("it takes more parameter!!!n"); } if(argc==2) { current_dir = (char *)getcwd(current_dir,MAX_PATH); } if(argc==3) { length = strlen(argv[1]); if(length>1 && (argv[1][length⑴]=='/')) { argv[1][length⑴]=='?'; } current_dir = argv[1]; file_name = argv[2]; } Search_File(current_dir,file_name); printf("Hello world!n"); return 0; } */ #endif


Filesearch.cpp:

// // Filesearch.cpp // mac_client // // Created by mac mac on 13⑸⑵1. // Copyright (c) 2013年 __MyCompanyName__. All rights reserved. // #include <stdio.h> #include <iostream> #include "Filesearch.h" int search_flag = 0; int IsDir(char *name) { struct stat buff; if(lstat(name,&buff)<0) return 0; return S_ISDIR(buff.st_mode); } //调用的时候直接使用'/'目录作为搜索路径,相当于搜索全盘了。 void Search_File(char *path,char *name) { DIR *directory; struct dirent *dir_entry; char buffer[MAX_PATH]; if((directory = opendir(path)) == NULL) { fprintf(stderr,"%s",path); printf(path); perror(" "); return; } while(dir_entry == readdir(directory)) { if(!strcmp(dir_entry->d_name,".")||!strcmp(dir_entry->d_name,"..")) { //do nothing } else { if((strcmp(path,"/")) == 0) { sprintf(buffer,"%s%s",path,dir_entry->d_name); // printf(buffer); /* if is not boot directory do not add "/"*/ } else { sprintf(buffer,"%s/%s",path,dir_entry->d_name); printf(buffer); printf(" "); } if(IsDir(buffer)) { Search_File(buffer,name); } else { //find the file,if exist if(strcmp(dir_entry->d_name,name)==0) { printf("%sn",buffer); search_flag=1; } } } } closedir(directory); } void setOutFiles(const char * path)//得到指定目录下面所有文件, 传输的时候还得改 { DIR *dp; struct dirent *dirp; char fullpath[MAX_PATH] = {0}; if((dp = opendir(path)) == NULL) { //err_quit(); return ; } if (strcmp(path,"/") == 0) //如果是根目录,要处理1下 { while((dirp = readdir(dp))!= NULL) { sprintf(fullpath,"%s%s", path,dirp->d_name); printf("%s ",fullpath); } } else { while((dirp = readdir(dp))!= NULL) { sprintf(fullpath,"%s/%s", path,dirp->d_name); printf("%s ",fullpath); } } }


 

 

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐