C# Directory 遍历文件夹
程序员文章站
2022-06-12 08:26:25
...
前言:编辑器拓展常常要访问到文件目录。所以文件相关的操作挺重要的。这里记录下遍历文件的方法
目录
1. 先列举下会用到的类
- **FileInfo** : 文件类(不包括目录)
- **DirectoryInfo** : 目录类
- **FileSystemInfo** :通用文件类,可以是文件,也可以是目录。
可以通过FileSystemInfo.Attributes 来判断是不是目录:
bool isDir = fileSystemInfo.Attributes == FileAttributes.Directory;
2. 遍历目录里的所有文件
获取一个目录里的所有文件
public void AccessAllFile(string dirPath)
{
DirectoryInfo directoryInfo = new DirectoryInfo(dirPath);
//SearchOption.AllDirectories 代表遍历子文件夹。
//SearchOption.TopDirectoryOnly 或 不加参数 则只访问第一层文件
FileInfo[] fileInfos = directoryInfo.GetFiles("*", SearchOption.AllDirectories);
for (int i = 0; i < fileInfos.Length; i++)
{
Log.Debug($"name:{fileInfos[i].Name}");
}
}
获取一个目录里的所有文件夹
public void AccessAllDir(string dirPath)
{
DirectoryInfo directoryInfo = new DirectoryInfo(dirPath);
DirectoryInfo[] dirInfos = directoryInfo.GetDirectories("*", SearchOption.AllDirectories);
for (int i = 0; i < dirInfos.Length; i++)
{
Log.Debug($"name:{dirInfos[i].Name}");
}
}
获取一个目录的的所有文件夹和文件(方法1)
public void AccessAllFileAndDir(string dirPath)
{
DirectoryInfo directoryInfo = new DirectoryInfo(dirPath);
FileSystemInfo[] fileSystemInfos = directoryInfo.GetFileSystemInfos("*",SearchOption.AllDirectories);
for (int i = 0; i < fileSystemInfos.Length; i++)
{
var file = fileSystemInfos[i];
Log.Debug($"isDir:{file.Attributes == FileAttributes.Directory} name:{file.Name}");
}
}
获取一个目录的的所有文件夹和文件(方法2:自己递归)
public void AccessAllFileAndDir2(string dirPath)
{
DirectoryInfo directoryInfo = new DirectoryInfo(dirPath);
FileSystemInfo[] fileSystemInfos = directoryInfo.GetFileSystemInfos();
for (int i = 0; i < fileSystemInfos.Length; i++)
{
var fileSystemInfo = fileSystemInfos[i];
bool isDir = fileSystemInfo.Attributes == FileAttributes.Directory;
if (isDir)
{
Debug.Log($"dir name:{fileSystemInfo.Name}");
AccessAllFileAndDir2(fileSystemInfo.FullName);
}
else
{
Debug.Log($"file name:{fileSystemInfo.Name}");
}
}
}
- 最后,附上一个删除目录里所有文件的方法,让一切归于平静…
public void DeleteAllFile(string dir)
{
DirectoryInfo directoryInfo = new DirectoryInfo(dir);
FileSystemInfo[] fileSystemInfos = directoryInfo.GetFileSystemInfos();
for (int i = 0; i < fileSystemInfos.Length; i++)
{
FileSystemInfo file = fileSystemInfos[i];
bool isDir = file.Attributes == FileAttributes.Directory;
if (isDir)
{
Directory.Delete(file.FullName,true);
}
else
{
File.Delete(file.FullName);
}
}
}
上一篇: C#路径中获取文件全路径、目录、扩展名、文件名称和修改文件名
下一篇: 娘娘腔男朋友
推荐阅读
-
C#使用foreach语句遍历堆栈(Stack)的方法
-
C# 对文件与文件夹的操作包括删除、移动与复制
-
C# copy source directory files with original folder to the destination path
-
C#遍历文件夹获取指定后缀名文件
-
C#获取某路径文件夹中全部图片或其它指定格式的文件名的实例方法
-
Python3.遍历某文件夹提取特定文件名的实例
-
c#删除指定文件夹中今天之前的文件
-
C#使用foreach遍历哈希表(hashtable)的方法
-
C#使用foreach语句遍历队列(Queue)的方法
-
C#使用foreach语句遍历二维数组的方法