C#循环遍历文件夹下的文件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:Visual Studio 2015
作者:李成富
撰写时间:2019年8月03日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
实现该功能使用到了DirectoryInfo类。
DirectoryInfo 类派生自 FileSystemInfo 类。它提供了各种用于创建、移动、浏览目录和子目录的方法。该类不能被继承。
下表列出了 DirectoryInfo 类中一些常用的属性:
- Attributes:获取当前文件或目录的属性
- CreationTime:获取当前文件或目录的创建时间
- Exists:获取一个表示目录是否存在的布尔值
- Extension:获取表示文件存在的字符串
- FullName:获取目录或文件的完整路径
- LastAccessTime:获取当前文件或目录最后被访问的时间
- Name:获取该DirectoryInfo实例的名称
下表列出了 DirectoryInfo 类中一些常用的方法:
- public void Create():创建一个目录
- public DirectoryInfo Create Subdirectory(string path):在指定的路径上创建子目录。指定的路径可以是相对于DirectoryInfo类的实例的路径
- public override void Delete():如果为空的,则删除该DirectoryInfo
- public DirectoryInfo[] GetDirectories():返回当前目录的子目录
- public FileInfo[] GetFiles():从当前目录返回文件列表
通过以上的知识点,简单的做了一个循环遍历所有文件夹下的文件的功能,用到DirectoryInfo 类中的属性有CreationTime、LastAccessTime、Name、Extension。
xaml页面代码:
<Grid>
<ListBox x:Name="listBox" HorizontalAlignment="Left" Height="200" Margin="70,36,0,0" VerticalAlignment="Top" Width="650"/>
<Button x:Name="button" Content="按钮" HorizontalAlignment="Left" Margin="202,263,0,0" VerticalAlignment="Top" Width="75" Height="40" RenderTransformOrigin="-0.307,0.364" Click="button_Click"/>
</Grid>
前台效果图:
C#代码:
//扫描路径
DirectoryInfo theFolder = new DirectoryInfo(@"F:\前段知识看点\代码集\");
//按钮事件
private void button_Click(object sender, RoutedEventArgs e)
{
scan(theFolder);
}
//扫描方法
private void scan(FileSystemInfo info)
{
if (!info.Exists) return;
DirectoryInfo dir = info as DirectoryInfo;
//不是目录
if (dir == null) return;
FileSystemInfo[] files = dir.GetFileSystemInfos();
for (int i = 0; i < files.Length; i++)
{
FileInfo file = files[i] as FileInfo;
//是文件
if (file != null)
{
listBox.Items.Add("名字: " + file.Name + ", 创建时间: " + file.CreationTime + ", 扩展名: " + file.Extension + ", 上次访问时间: " + file.LastAccessTime);
}
else scan(files[i]);
}
}
效果图: