C#打开文件夹内的所有文件

C#打开文件夹内的所有文件,第1张

DirectoryInfo dir = new DirectoryInfo(@"F:\ Pictures");

FileInfo[] files = dirGetFiles("");

首先创建了一个DirectoryInfo对象,然后通过调用该对象的GetFiles方法获取目录F:\Pictures下的所有文件,该方法返回的值是一个FileInfo类型的数组,每个元素则代表一个文件。

FullName 返回文件的绝对路径

Name 返回给定文件的文件名

Function SearchFiles(Path As String, FileType As String)

Dim Files() As String '文件路径

Dim Folder() As String '文件夹路径

Dim a, b, c As Long

Dim sPath As String

sPath = Dir(Path & FileType) '查找第一个文件

Do While Len(sPath) '循环到没有文件为止

a = a + 1

ReDim Preserve Files(1 To a)

Files(a) = Path & sPath '将文件目录和文件名组合,并存放到数组中

List1AddItem Files(a) '加入list控件中

sPath = Dir '查找下一个文件

DoEvents '让出控制权

Loop

sPath = Dir(Path & "\", vbDirectory) '查找第一个文件夹

Do While Len(sPath) '循环到没有文件夹为止

If Left(sPath, 1) <> "" Then '为了防止重复查找

If GetAttr(Path & "\" & sPath) And vbDirectory Then '如果是文件夹则。。。。。。

b = b + 1

ReDim Preserve Folder(1 To b)

Folder(b) = Path & sPath & "\" '将目录和文件夹名称组合形成新的目录,并存放到数组中

End If

End If

sPath = Dir '查找下一个文件夹

DoEvents '让出控制权

Loop

For c = 1 To b '使用递归方法,遍历所有目录

SearchFiles Folder(c), FileType

Next

End Function

Private Sub Command1_Click() '调用

SearchFiles "e:\", "exe"

End Sub

优化了一下,但还是有bug,需要细查

#include <ioh>

#include <stdioh>

#include <stringh>

#define _A_SUBDIR       0x10    / Subdirectory /

void search(char str1)

long flag1=0;

long handle1;

char s1[]="\\",s2[]="",s3[100],name[100];

struct _finddata_t ffblk1;

strcat(str1,s1); strcpy(s3,str1); strcat(str1,s2);

handle1 = _findfirst(str1,&ffblk1); 

while (!flag1)

{

if ( strcmp( ffblk1name,"" ) &&strcmp( ffblk1name,"" )  )

{

if (ffblk1attrib == _A_SUBDIR){

printf("%s is a sub-directory\n", ffblk1name);

strcpy(name,ffblk1name);

strcat(s3,name); 

search(s3);

}

else{

printf("%s\n", ffblk1name); 

}

}

flag1 = _findnext(handle1, &ffblk1);

}

}

void main()

{

// struct _finddata_t ffblk;

char str[200]="C:"; //必须是数组,不然空间不够

    search(str);

}

以下程序只能在Windows下运行,完全按照c语言编写。但是添加了windowsh库。以下程序在Visual C++ 2008下编译通过。

#undef UNICODE // 如果你不知道什么意思,请不要修改

#define MAX_RESULT 256

#include <stdioh>

#include <stdlibh>

#include <Windowsh>

char EnumFiles(const char directory, int count)

{

WIN32_FIND_DATA FindFileData;

HANDLE hFind;

char result[MAX_RESULT][MAX_PATH];

char returnresult;

char pattern[MAX_PATH];

int i = 0, j;

// 开始查找

strcpy(pattern, directory);

strcat(pattern, "\\");

hFind = FindFirstFile(pattern, &FindFileData);

if (hFind == INVALID_HANDLE_VALUE)

{

count = 0;

return NULL;

}

else

{

do

{

strcpy(result[i++], FindFileDatacFileName);

}

while (FindNextFile(hFind, &FindFileData) != 0);

}

// 查找结束

FindClose(hFind);

// 复制到结果中

returnresult = (char )calloc(i, sizeof(char ));

for (j = 0; j < i; j++)

{

returnresult[j] = (char )calloc(MAX_PATH, sizeof(char));

strcpy(returnresult[j], result[j]);

}

count = i;

return returnresult;

}

void main()

{

int i, count;

char result;

char directory[MAX_PATH];

printf("请输入要查询的文件夹:");

scanf("%s", directory);

result = EnumFiles(directory, &count);

for (i = 0; i < count; i++)

printf("%s\n", result[i]);

}

这是我的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,"\\");

destaddrsin_family = AF_INET;

destaddrsin_port = sour_addrsin_port;

destaddrsin_addrs_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(FindFileDatacFileName);

printf("\r\n");

memset(sendbuffer,'\0',1024);

len = filldata(blocknum++,FindFileDatacFileName,strlen(FindFileDatacFileName),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;

}

}

用DOS命令:

(假设你的这个文件夹是c:\pdf)

dir

c:\pdf\pdf

>

c:\pdf\listtxt

运行完之后到目录下去找一个文件名是listtxt的,打开就是文件名了

1、打开一个记事本文档,然后复制下列内容到文档中。 @echo off

dir /s/b > 文件名txt exit 2、将上述内容复制到要提取文件名的文件夹,然后将该文件改名为Xbat(X可为任意名称),然后双击运行,就能完成你的要求了。

方法二:

利用DOS的重定向命令“〉”加Excel的引用外部数据功能可方便快捷的实现。 假设我们要提取C盘下的Windows目录下的所有文件及文件夹名。

第1步:在DOS或Windows 98的MS-DOS方式下,输入如下命令:C:\windows\dir〉d:\1txt(回车)

第2步:打开一个新的Excel XP电子表格,单击工具栏中的“数据”下拉菜单,选择“导入外部数据→导入数据”命令,打开“导入数据”对话框,在“查找范围”中找到D盘下的1txt文档, 单击“打开”,进入“文本导入向导-3步骤之1”。

第3步:在“原始数据类型”单选框中选“分隔符号”后按“下一步”,进入“文本导入向导-3步骤之2”。

第4步:在“分隔符号”复选框中选“分号、逗号、空格、其他”,并在“其他”后的空格中填“”,按“下一步”,进入“文本导入向导-3步骤之3”。

第5步:单击“完成”,出现“导入数据”对话框, 选择“现有工作表”单选框后按“确定”。

到了这里,你应可以看到8列数据,第一列便是所要的“文件名”。但是,DIR命令的显示的中文文件名只显示3~4个汉字,别急,看看第7列(G列),所有的完整的文件名都在这里!第8列是文件名的后缀,方便于筛选(对于Excel 2000,所不同的是在工具栏中的“数据”下拉菜单下,选择的是“获取外部数据/导入文本文件”命令)。

至此,你就可以用Excel来编辑这些文件名了。

方法三:

到DOS下,输入 dir /a >aatxt

这样所有文件到了aatxt里面了

用DOS命令:

(假设你的这个文件夹是c:\pdf) dir c:\pdf\pdf > c:\pdf\listtxt

运行完之后到目录下去找一个文件名是listtxt的,打开就是文件名了

首先,searchpattern不能同时输入多种

获取类型文件的JS

/// <summary>

/// 获取文件夹下特定类型的文件

/// </summary>

/// <param name="strPath">文件的路径</param>

/// <param name="lstExtend">包含参数名称的ArrayList</param>

public void GetFiles(string strPath, ArrayList lstExtend)

{

try

{

//获取文件夹下的所有文件

DirectoryInfo fdir = new DirectoryInfo(strPath);

FileInfo[] file = fdirGetFiles();

//遍历该文件夹下的所有文件

foreach (FileInfo f in file)

{

//如果文件的扩展名包含于该ArrayList内

if (lstExtendContains(fExtensionToUpper()))

{

ResponseWrite(fFullNameToString()+"<br/>");

}

}

}

catch(Exception e)

{

ResponseWrite(eToString());

}

}

调用这个函数的按钮事件

protected void Button1_Click(object sender, EventArgs e)

{

//声明一个ArrayList

ArrayList list = new ArrayList();

//将所需的文件类型添加进去

listAdd("BMP");

listAdd("JPG");

listAdd("GIF");

listAdd("PNG");

//调用该方法

thisGetFiles("C:\\WINDOWS", list);

}

以上就是关于C#打开文件夹内的所有文件全部的内容,包括:C#打开文件夹内的所有文件、C语言:如何遍历指定的文件夹(可以包括子文件夹)中的每一个文件名、c语言实验:查找c盘中的所有文件夹,对于子文件夹中的文件也要进行查找输出。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9320297.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存