① C语言如何读取指定路径下的所有指定格式的文件
用C语言读取目录中的文件名的方法:1、如果是在window环境下,可以用一下方法:使用stdlib.h头文件声明的system()函数_CRTIMP int __cdecl system (const char*);system("dir c:\ /a:h /b > c:\dir.txt");调用系统命令dir,把c:目录下文件列表写入文件dir.txt中2、使用dirent.h头文件中声明的opendir(),readdir()函数;
intmain(intargc,char*argv[]){DIR*directory_pointer;structdirent*entry;if((directory_pointer=opendir("d:\XL"))==NULL)printf("Erroropening");else{while((entry=readdir(directory_pointer))!=NULL){printf("%s",entry->d_name);}closedir(directory_pointer);}system("PAUSE");return0;}
3、如果没有dirent.h,可以使用io.h头文件中声明的_findfirst(),_findnext()函数;示例代码:
intmain(intargc,char*argv[]){longfile;struct_finddata_tfind;_chdir("d:\");if((file=_findfirst("*.*",&find))==-1L){printf("空白!");exit(0);}printf("%s",find.name);while(_findnext(file,&find)==0){printf("%s",find.name);}_findclose(file);system("PAUSE");return0;}
② c++ 怎么读取一个目录下的所有文件
遍历文件,用FindFirstFile或者_findfirstfile及其配套的函数,下面是一个简单的例子
//.hstructfile_tree{public:file_tree();intfind_first(constchar*path);intfind_next();intis_file();intis_folder();FILETIMEget_create_time();FILETIMEget_last_modified_time();FILETIMEget_last_access_time();constchar*get_name();~file_tree();private:HANDLEhandle;WIN32_FIND_DATAfd;};//.cppfile_tree::file_tree():handle(INVALID_HANDLE_VALUE){}intfile_tree::find_first(constchar*path){if(handle!=INVALID_HANDLE_VALUE){FindClose(handle);}staticcharall[MAX_FILE_PATH_LEN+5];sprintf(all,"%s\*",path);handle=FindFirstFile(all,&fd);return0;}intfile_tree::find_next(){returnFindNextFile(handle,&fd);}intfile_tree::is_file(){return(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)==0;}intfile_tree::is_folder(){returnfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY;}FILETIMEfile_tree::get_create_time(){returnfd.ftCreationTime;}FILETIMEfile_tree::get_last_modified_time(){returnfd.ftLastWriteTime;}FILETIMEfile_tree::get_last_access_time(){returnfd.ftLastAccessTime;}constchar*file_tree::get_name(){returnfd.cFileName;}file_tree::~file_tree(){if(handle!=INVALID_HANDLE_VALUE)FindClose(handle);}
然后使用递归,
voiddoFolder(){file_treeft;ft.find_first(data->from);ft.find_next();while(ft.find_next()){if(ft.is_file()){doFile();}elseif(ft.is_folder()){doFolder();}else{//TODO}}}
③ C语言问题 已知某一路径,如何得到该路径下的某一文件夹的路径
#include <stdio.h>#include <errno.h>#include <unistd.h>#include <string.h>#include <io.h>#define MAX_FILE_PATH_LEN 128#define INVALID_HANDLE -1int main(){ char aucFilePath[MAX_FILE_PATH_LEN + 1] = {0};char aucTempPath[MAX_FILE_PATH_LEN + 1] = {0};char *pFilePath = NULL; int iDirNum = 0;int iFileNum = 0;_finddata_t finddata = {0}; long findhandle = INVALID_HANDLE;//获取当前目录,也可以做入参传入aucFilePath pFilePath = getcwd(aucFilePath, MAX_FILE_PATH_LEN);if (NULL == pFilePath) { printf("get current working directory fail, \n" "errno = %d, errro description : %s\n", errno, strerror(errno)); getchar(); return -1; }printf("current working directory = %s\n", aucFilePath);strncpy(aucTempPath, aucFilePath, strlen(aucFilePath));strncat(aucTempPath, "\\*", MAX_FILE_PATH_LEN);findhandle = _findfirst(aucTempPath, &finddata);if(findhandle != INVALID_HANDLE){do {if(finddata.attrib & _A_SUBDIR) { if ((0 != strcmp(finddata.name, ".")) && (0 != strcmp(finddata.name, ".."))) { //子目录个数 iDirNum++; printf("sub directory name = %s, path = %s\\%s, iDirNum = %d\n", finddata.name, aucFilePath, finddata.name, iDirNum); } } else { //子文件个数 iFileNum++; printf("file = %s, iFileNum = %d\n", finddata.name, iFileNum); } }while(0 == _findnext(findhandle, &finddata)); _findclose(findhandle); } getchar(); return 0;}
④ C语言中,怎样访问其他路径中的文件
fp=fopen(filename,"wb");里的filename就表示了文件的路径及文件名,所以要把输入的文件名和文件路径拼接起来,计算出这个filename,例如,stringfilename,path,name;……(获取path,name的值)filename=path+name;fp=fopen(filename,"wb");
⑤ c语言如何读取一个目录下的所有文件
int main(){ long file; struct _finddata_t find; _chdir("d:\\"); if((file=_findfirst("*.*", &find))==-1L) { printf("空白!\n"); exit(0); } printf("%s\n", find.name); while(_findnext(file, &find)==0) { printf("%s\n", find.name); } _findclose(file); return 0;}
⑥ 如何用C语言获取目录下的文件和目录列表
#include <stdio.h>#include <stdlib.h>void main() {system("DIR /D C:\\ /s /B > a.log");}C:\下的所有抄文件夹袭,子文件夹里所有文件,转向到 文本文件 a.log 里。格式:C:\aaa\bbb\ccc\…只要文件夹命令:dir /d c: /B /ad 只要文件夹命令,含子文件夹:dir /d c: /B /ad /s
⑦ VC环境中用C语言查找当前路径下的所有文件和文件夹的函数是什么
这是我的TFTP程序中的一个函数,是搜索当前盘符下的所有文件,包括文件的大小,并发送到客户端,其中就有查找当前路径下的文件,你自己挑一下,应该能完成你的需求。void FileList(sockaddr_in sour_addr,char strStartDir[]){ char sendbuffer[1024]; sockaddr_in destaddr; int sourlen = 0; int ret = 0; int len = 0; int flen = 0; fd_set fdr; unsigned short blocknum = 0; FILE *file; char filename[128]; strcpy(filename,strStartDir+2); /*获取文件名*/ strcat(filename,"\\*"); destaddr.sin_family = AF_INET; destaddr.sin_port = sour_addr.sin_port; destaddr.sin_addr.s_addr = inet_addr(desthost);// WIN32_FIND_DATA FindFileData; HANDLE hFind; hFind = FindFirstFile(filename, &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { printf ("Invalid File Handle"); } else { while(FindNextFile(hFind,&FindFileData)) { printf(FindFileData.cFileName); printf("\r\n"); memset(sendbuffer,'\0',1024); len = filldata(blocknum++,FindFileData.cFileName,strlen(FindFileData.cFileName),sendbuffer,sizeof(sendbuffer)); ret = sendto(serverSock,sendbuffer,len,0,(sockaddr *)&destaddr,sizeof(destaddr)); } len = fillover(blocknum,"Over",4,sendbuffer,sizeof(sendbuffer)); ret = sendto(serverSock,sendbuffer,len,0,(sockaddr *)&destaddr,sizeof(destaddr)); FindClose(hFind); return; }}
⑧ C# 遍历文件夹下所有子文件夹中的文件,得到文件名
假设a文件夹在F盘下,代码如下。将文件名输出到一个ListBox中using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace WindowsFormsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { DirectoryInfo theFolder = new DirectoryInfo(@"F:\a\"); DirectoryInfo[] dirInfo = theFolder.GetDirectories(); //遍历文件夹 foreach (DirectoryInfo NextFolder in dirInfo) { // this.listBox1.Items.Add(NextFolder.Name); FileInfo[] fileInfo = NextFolder.GetFiles(); foreach (FileInfo NextFile in fileInfo) //遍历文件 this.listBox2.Items.Add(NextFile.Name); } } }}
⑨ C语言怎么读取某一文件夹下的所有文件夹和文件
读取的代码方式如下:
int main()
{
long file;
struct _finddata_t find;
_chdir("d:\");
if((file=_findfirst("*.*", &find))==-1L)
{
printf("空白!");
exit(0);
}
printf("%s", find.name);
while(_findnext(file, &find)==0)
{
printf("%s", find.name);
}
_findclose(file);
return 0;
}
⑩ 请教C语言怎么获取本路径下指定后缀名的文件并打开
opendir打开目录循环获取目录下每个文件节点判断后缀为txt对于所有符合的,对比创建时间,保存最早的。
未经允许不得转载:山九号 » c获取路径下的文件|C语言怎么读取某一文件夹下的所有文件夹和文件