C#提取指定文件夹目录
FolderBrowserDialog组件可以选中和浏览文件夹,当要得到某个文件夹的额所有文件名并复制到其他文本中时,可以用FolderBrowserDialog组件让用户选择将要复制文件名的文件夹,Directory类的静态方法GetFiles就可以获得目录下的所有文件名不包括子文件夹,然后加入TextBox控件中,这样就可以进行复制粘贴操作了。
一 技术要点
将textbox控件的Multiline属性设置为true,就可以让textbox显示多行文本,只要将textbox的lines属性赋值为一个字符数组即可。在textbox中单击鼠标右键就可以进行复制操作了。
注意:因为使用了Directory类,所以要添加对System.IO命名空间的引用。
1.1 FolderBrowserDialog 类
命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll
功能:此类提供一种提示用户浏览、创建和最终选择文件夹的方法。 当你只想允许用户选择文件夹而不是文件时,请使用此类。
方法:folderBrowserDialog1.ShowDialog(),打开默认的对话框,如下图所示
folderBrowserDialog.SelectedPath,获取或设置用户选择的路径。
1.2 Directory.GetFiles 方法
命名空间:System.IO
程序集:System.IO.FileSystem.dll, mscorlib.dll, netstandard.dll
1.2.1 GetFiles(String)
功能:返回指定目录中文件的名称(包括其路径)。
参数:string path,要搜索的目录的相对或绝对路径。 此字符串不区分大小写。
返回:String[] ,一个包含指定目录中的文件的完整名称(包含路径)的数组,如果未找到任何文件,则为空数组。
1.2.2 GetFiles(String, String)
功能:返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径)。
参数:string path,要搜索的目录的相对或绝对路径。 此字符串不区分大小写。
String searchPattern ,要与path中的文件名匹配的搜索字符串。
返回:String[] ,一个包含指定目录中的文件的完整名称(包含路径)的数组,如果未找到任何文件,则为空数组。
1.2.3 GetFiles(String, String, SearchOption)
功能:返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径),使用某个值确定是否要搜索子目录。
参数:string path,要搜索的目录的相对或绝对路径。 此字符串不区分大小写。
String searchPattern ,要与path中的文件名匹配的搜索字符串。
searchOption SearchOption,用于指定搜索操作是应包含所有子目录还是仅包含当前目录的枚举值之一。
返回:String[] ,指定目录中与指定的搜索模式和选项匹配的文件的完整名称(包含路径)的数组;如果未找到任何文件,则为空数组。
二 实现过程
(1)创建一个项目,将其命名为GetDirectoryFile,默认窗体为Form1.
(2)在窗体上添加一个textbox控件用来输入路径,添加一个FolderBrowserDialog控件用来选择文件夹,添加3个Button控件分别用来打开目录,提取文件和关闭窗体。
(3)代码示例:
#region 打开按钮事件
private void btnOpen_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)//folderBrowserDialog1.ShowDialog(),打开默认的对话框
//DialogResult.OK,对话框中的确认按键
{
textBox1.Text = folderBrowserDialog1.SelectedPath;//folderBrowserDialog.SelectedPath,获取或设置用户选择的路径
}
}
#endregion
#region 提取文件按钮事件
private void btnExtractFile_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim()==string.Empty)
{
MessageBox.Show("请选择文件夹!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Stop);
btnOpen.Focus();
return;
}
if (Directory.Exists(textBox1.Text.Trim())==false)
{
MessageBox.Show("选择文件夹不存在,请重新选择!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
textBox1.Text = string.Empty;
btnOpen.Focus();
return;
}
string[] files = Directory.GetFiles(textBox1.Text.Trim());
for (int i = 0; i < files.Length; i++)
{
textBox2.Lines = files;
}
}
#endregion
#region 关闭按钮事件
private void btnClose_Click(object sender, EventArgs e)
{
Close();
}
#endregion
(4)结果: