如何访问指定目录下的任意文件或子目录?(附C#目录操作代码场景)
访问指定目录下的文件或子目录解决方案
嘿,我来帮你搞定这个问题!你已经定义了根目录路径MyPath = @"D:/Documents/Reonance Tunneling";,还有选中文件夹节点的逻辑,要访问目录下的文件或子目录其实很直观,分几种常用场景来说:
1. 直接访问根目录下的内容
如果你想操作根目录里的所有文件和子目录,直接用DirectoryInfo类实例化根路径就行,它提供了丰富的方法来获取目录内容:
// 别忘了先引用System.IO命名空间 using System.IO; // 实例化根目录的DirectoryInfo对象 DirectoryInfo rootDirInfo = new DirectoryInfo(MyPath); // 获取根目录下的所有一级子目录 DirectoryInfo[] rootSubDirs = rootDirInfo.GetDirectories(); // 获取根目录下的所有一级文件 FileInfo[] rootFiles = rootDirInfo.GetFiles(); // 进阶用法:用通配符过滤文件,比如只获取txt文件 FileInfo[] txtFiles = rootDirInfo.GetFiles("*.txt"); // 递归获取根目录下所有层级的文件(包括子目录里的) FileInfo[] allFiles = rootDirInfo.GetFiles("*", SearchOption.AllDirectories);
2. 通过选中的TreeNode访问对应目录的内容
你在删除按钮的代码里已经拿到了选中节点的nodeDirInfo(DirectoryInfo类型),直接用这个对象就能访问该节点对应目录下的所有内容:
private void BntDeleteFolder_Click(object sender, EventArgs e) { TreeNode newSelected = TreeView1.SelectedNode; string DirectoryName = newSelected.Text; DirectoryInfo nodeDirInfo = (DirectoryInfo)newSelected.Tag; // 在这里添加访问目录内容的逻辑 // 获取选中目录下的所有一级子目录 DirectoryInfo[] selectedSubDirs = nodeDirInfo.GetDirectories(); // 获取选中目录下的所有一级文件 FileInfo[] selectedFiles = nodeDirInfo.GetFiles(); // 示例:遍历选中目录下的所有文件并输出路径 foreach(FileInfo file in selectedFiles) { // 可以把路径显示在界面控件里,比如TextBox // textBox1.AppendText(file.FullName + Environment.NewLine); Console.WriteLine(file.FullName); } try { if (MessageBox.Show("Are you sure you want to delete Folder " + "'" + DirectoryName + "'" + " ?...") == DialogResult.Yes) { // 你的删除逻辑 } } catch(Exception ex) { MessageBox.Show("Delete failed: " + ex.Message); } }
3. 注意事项
- 必须添加
using System.IO;命名空间,否则DirectoryInfo、FileInfo这些类无法使用 - 操作文件/目录时建议保留
try-catch块,处理权限不足、文件被占用、目录不存在等异常情况
内容的提问来源于stack exchange,提问作者James N
相关产品推荐
相关产品推荐

