c文件夾查找文件夾
⑴ 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語言怎麼讀取某一文件夾下的所有文件夾和文件
讀取的代碼方式如下:
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# 遍歷文件夾下所有子文件夾中的文件,得到文件名
輸入某文件夾路徑,遍歷該文件夾及其子文件夾(包括子文件夾的子文件夾等),獲取其中所有文件的函數:
/// <summary>
/// 查找指定文件夾下指定後綴名的文件
/// </summary>
/// <param name="directory">文件夾</param>
/// <param name="pattern">後綴名</param>
/// <returns>文件路徑</returns>
public void GetFiles(DirectoryInfo directory, string pattern, ref List<string> fileList)
foreach (FileInfo info in directory.GetFiles(pattern))
catch (System.Exception ex)
foreach (DirectoryInfo info in directory.GetDirectories())//獲取文件夾下的子文件夾
語言結構
類:一個基本的C#類中包含數據成員、屬性、構造器和方法。屬性可以是靜態或實例成員。在C#中類的聲明與C++和Java很相似。但是,不像C++,C#結構體與類是不支持繼承多個父類。但是,與Java相同的是,一個結構體可以實現介面(interface)。Java的關鍵字import已經被替換成using,它起到了同樣的作用。
以上內容參考:網路-c#
⑷ 怎樣使用C語言列出某個目錄下的文件
C語言本身沒有提供象dir_list()這樣的函數來列出某個目錄下所有的文件。不過,利用C語言的幾個目錄函數,你可以自己編寫一個dir_list()函數。 首先,頭文件dos.h定義了一個find_t結構,它可以描述DOS下的文件信息,包括文件名、時間、日期、大小和屬性。其次,C編譯程序庫中有_dos_findfirst()和_dos_findnext()這樣兩個函數,利用它們可以找到某個目錄下符合查找要求的第一個或下一個文件。 dos_findfirst()函數有三個參數,第一個參數指明要查找的文件名,例如你可以用「*.*」指明要查找某個目錄下的所有文件。第二個參數指明要查找的文件屬性,例如你可以指明只查找隱含文件或子目錄。第三個參數是指向一個find_t變數的指針,查找到的文件的有關信息將存放到該變數中。 dos_findnext()函數在相應的目錄中繼續查找由_dos_findfirst()函數的第一個參數指明的文件。_dos_findnext()函數只有一個參數,它同樣是指向一個find_t變數的指針,查找到剛文件的有關信息同樣將存放到該變數中。 利用上述兩個函數和find_t結構,你就可以遍歷磁碟上的某個目錄,並列出該目錄下所有的文件,請看下例: #include <stdio.h> #include <direct.h> #include <dos.h> #include <malloc.h> #include <memory.h> #include <string.h> typedef struct find_t FILE_BLOCK void main(void); void main(void){FILE_BLOCK f-block; /* Define the find_t structure variable * / int ret_code; / * Define a variable to store the return codes * / / * Use the "*.*" file mask and the 0xFF attribute mask to list all files in the directory, including system files, hidden files, and subdirectory names. * / ret_code = _dos_findfirst(" *. * ", 0xFF, &f_block); /* The _dos_findfirst() function returns a 0 when it is successful and has found a valid filename in the directory. * / while (ret_code == 0){/* Print the file's name * / printf(" %-12s\n, f_block, name); / * Use the -dos_findnext() function to look
⑸ C裡面怎麼實現指定一個文件夾目錄 查詢文件夾內是否有這個文件,假如有就復制這個文件到我指定的目錄下。
可以使用findfirst函數查找,用system()函數復制。
⑹ c語言實驗:查找c盤中的所有文件夾,對於子文件夾中的文件也要進行查找輸出。
優化了一下,但還是有bug,需要細查
#include<io.h>
#include<stdio.h>
#include<string.h>
#define_A_SUBDIR0x10/*Subdirectory*/
voidsearch(char*str1)
{
longflag1=0;
longhandle1;
chars1[]="\",s2[]="*.*",s3[100],name[100];
struct_finddata_tffblk1;
strcat(str1,s1);strcpy(s3,str1);strcat(str1,s2);
handle1=_findfirst(str1,&ffblk1);
while(!flag1)
{
if(strcmp(ffblk1.name,".")&&strcmp(ffblk1.name,".."))
{
if(ffblk1.attrib==_A_SUBDIR){
printf("%sisasub-directory ",ffblk1.name);
strcpy(name,ffblk1.name);
strcat(s3,name);
search(s3);
}
else{
printf("%s ",ffblk1.name);
}
}
flag1=_findnext(handle1,&ffblk1);
}
}
voidmain()
{
// struct_finddata_tffblk;
charstr[200]="C:";//必須是數組,不然空間不夠
search(str);
}
⑺ 請我如何c語言遍歷文件夾
#include <windows.h>
/************************************************/
*參數說明:
char *pszDestPath為需要遍歷的目標路徑
/************************************************/
EnmuDirectory(char *pszDestPath)
{
//此結構說明參MSDN
WIN32_FIND_DATA FindFileData;
//查找文件的句柄
HANDLE hListFile;
//絕對路徑,例:c:\windows\system32\cmd.exe
char szFullPath[MAX_PATH];
//相對路徑
char szFilePath[MAX_PATH];
//構造相對路徑
wsprintf(szFilePath, "%s\\*", pszDestPath);
//查找第一個文件,獲得查找句柄,如果FindFirstFile返回INVALID_HANDLE_VALUE則返回
if((hListFile = FindFirstFile(szFilePath, &FindFileData)) == INVALID_HANDLE_VALUE)
{
//查找文件錯誤
return 1;
}
else
{
do
{
//過濾.和..
//「.」代表本級目錄「..」代表父級目錄
if( lstrcmp(FindFileData.cFileName, TEXT(".")) == 0 ||
lstrcmp(FindFileData.cFileName, TEXT("..")) == 0 )
{
continue;
}
//構造全路徑
wsprintf(szFullPath, "%s\\%s", pszDestPath, FindFileData.cFileName);
//讀取文件屬性,如果不是文件夾
if(!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
//這里你可以自己添加分析是某種類型文件的代碼。可以根據
//擴展名分析。
//這里有個實例,你可以看看
//有必要初始化一下
char *pszFileType = NULL;
//把pszFileType指向cFileName的倒數第三個數符。因為一般擴展名長為3個字元。
//當然,你也可以用其它方法分析擴展名。或倒序查「.」
pszFileType = &(FindFileData.cFileName[strlen(FindFileData.cFileName) - 3]);
//如果是jpg結尾的文件
if(!stricmp(pszFileType, "jpg"))
{
FILE *fp;
//或許這里打開C:\\data.txt不應該用"w+",你可試著來
fp = fopen("c:\\data.txt", "w+");
if(fp) fputs(szFullPath, fp);
fclose(fp);
}
}
//如果是文件夾,則遞歸調用EnmuDirectory函數
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
EnmuDirectory(szFullPath);
}
//循環,查找下一個文件
}while(FindNextFile(hListFile, &FindFileData));
}
//關閉句柄
FindClose(hListFile);
//清空結構。可有可無的一句代碼。函數退出會自動清空。
ZeroMemory(&FindFileData, sizeof(FindFileData));
return 0;
}
這是windows api版的,還有MFC版的和C版的。要的話來找我Q:503267714
⑻ c語言 怎麼查找 當前目錄有哪些 文件
在命令提示符窗口運行:findfile (盤符): *.(文件後綴)
如:[sourcecode language=」plain」]findfile d: *.txt [/sourcecode]
即為找出d盤根目錄下的所有.txt後綴的文件並寫入文件路徑於文件中。
⑼ c++中如何搜索一個目錄下面所有文件夾名,
據我了解C++中沒有這樣的函數,但是你可以自己寫一個這樣的函數
1. 首先判斷你的參數是一個文件還是一個路徑
2. 如果是一個文件,直接遞歸的查找,並且返迴路徑
3. 如果是目錄,首先遞歸的查找文件夾,找到文件夾之後判斷文件夾中是否有這樣的文件,如果有返回找到的路徑,沒有就返回false