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盘中的所有文件夹,对于子文件夹中的文件也要进行查找输出。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)