//Store the selected directory.
private void btn_OpenFD_Click(object sender, EventArgs e) {
FolderBrowserDialog folderBD = new FolderBrowserDialog();
if(folderBD.ShowDialog() == DialogResult.OK)
txtFilesPath.Text = folderBD.SelectedPath;
}
//Start to read.
private void btnRead_Click(object sender, EventArgs e) {
string path = txtFilesPath.Text.Trim(); //The directory to read.
DirectoryInfo directory = new DirectoryInfo(path);
if(directory != null) {
FileSystemInfo[] files = directory.GetFileSystemInfos();
foreach(var file in files) {
if(File.Exists(file.Name)) { //Is File.
}
else if(Directory.Exists(file.Name)) { //Is Directory.
}
else { //Not File or Directory.
throw new ArgumentException("未知!");
}
}
}
}
//这是我在 Winform 用递归的方式去读取指定路径下的全部文件/文件夹:
FileSystemInfo[] files = directory.GetFileSystemInfos();
//我见很多人都是这样子:
// 取得指定路径下所有符合条件的文件
string[] strFiles = Directory.GetFiles(strDir, strFilePattern);
// 取得指定路径下所有目录
string[] strDirs = Directory.GetDirectories(strDir);
//我不用别人的这种方式可以么,因为这种方式不是要遍历"两次"分别获的 "File" 和 "Directory"么...
但是当我用:
FileSystemInfo[] files = directory.GetFileSystemInfos();
去试图访问的时候,发现有些文件夹不可访问...