获取文件夹内文件名字及源代码C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WinFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private string temStr;
Thread thdAddFile;
private void button1_Click(object sender, EventArgs e)
{
//打开文件夹对话框
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
//显示选择的文件夹路径
textBoxFile.Text = folderBrowserDialog1.SelectedPath;
//存储选择的文件夹路径
temStr = folderBrowserDialog1.SelectedPath;
//创建一个线程
//thdAddFile = new Thread(new ThreadStart(SetAddFile));
//执行当前线程
//thdAddFile.Start();
TreeNode TNode = new TreeNode();
File_Copy(treeView1, temStr, TNode, 0);
}
}
//定义委托线程
public delegate void AddFile();
/// <summary>
/// 对指定的线程进行托管
/// </summary>
public void SetAddFile()
{
this.Invoke(new AddFile(RunAddFile));
}
public void RunAddFile()
{
//创建一个线程
TreeNode TNode = new TreeNode();
File_Copy(treeView1, temStr, TNode, 0);
//执行主线程
Thread.Sleep(100);
//执行线程
//thdAddFile.Abort();
}
private void File_Copy(TreeView TV, string Sdir, TreeNode TNode, int n)
{
DirectoryInfo dir = new DirectoryInfo(Sdir);
try
{
//判断所指的文件夹/文件是否存在
if (!dir.Exists)
return;
DirectoryInfo dirD = dir as DirectoryInfo;
//如果给定参数不是文件夹则退出 判断文件夹是否为空
if (dirD == null)
return;
else
{
if (n == 0)
{
//添加文件夹的名称
TNode = TV.Nodes.Add(dirD.Name);
TNode.Tag = 1;
}
else
{
//在文件夹中添加各子文件夹的名称
TNode = TNode.Nodes.Add(dirD.Name);
TNode.Tag = 1;
}
}
//获取文件夹所有文件和文件夹
FileSystemInfo[] files = dirD.GetFileSystemInfos();
//对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作
foreach (FileSystemInfo FSys in files)
{
FileInfo fileInfo = FSys as FileInfo;
//如果是文件,进行文件的复制操作
if (fileInfo != null)
{
//获取文件所在原始路径
FileInfo SFInfo = new FileInfo(fileInfo.DirectoryName + "\\" + fileInfo.Name);
TNode.Nodes.Add(fileInfo.Name);
TNode.Tag = 1;
}
else
{
string pp = FSys.Name;
//如果是文件夹,则进行递归调用
File_Copy(TV, Sdir + "\\" + FSys.ToString(), TNode, 1);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
}
}