列出DataTable中的文件

时间:2016-06-08 22:12:41

标签: c# datatable

不可否认,我是编程的新手并且一直试图解决这个问题太久了......我需要(通过按钮点击)从特定文件夹中提取所有文件,包括所有子文件夹。我的两个数据表列是" FileName" &安培; "文件路径&#34 ;. FileName应该只显示文件名。 FilePath应该显示整个路径,包括c:任何帮助赞赏!

 string Dpath = @"C:\Users\me\Documents\Plot Files";
 DataTable d = new DataTable();
 DirectoryInfo DirInfo = new DirectoryInfo(Dpath);
 DataRow drawingTableRow = d.NewRow();
 foreach (FileInfo fi in DirInfo.GetFiles("*", SearchOption.AllDirectories))
 { 
     drawingTableRow = d.NewRow();
     drawingTableRow["FileName"] = fi.FullName;
     drawingTableRow["FilePath"] = fi.Name;
     d.Rows.Add(drawingTableRow);
 }

2 个答案:

答案 0 :(得分:0)

我认为你面临的问题是

  

找不到列"FileName"   线drawingTableRow["FileName"]

由于您尚未定义表的列名。因此,更改DataTable d的声明,如下所示将解决问题:

DataTable d = new DataTable();
d.Columns.Add("FileName");
d.Columns.Add("FilePath");

我会建议您填写DataTable的另一个选项,请看下面的代码:

DataTable FilesTable = new DataTable();
FilesTable.Columns.Add("FileName");
FilesTable.Columns.Add("FilePath");
DataRow dRow;
string yourPath = @"your path here";
string searchPattern = "*.*";
var resultData = Directory.GetFiles(yourPath, searchPattern, SearchOption.AllDirectories)
                .Select(x => new { FileName = Path.GetFileName(x),FilePath = x });

foreach (var item in resultData)
{
    dRow = FilesTable.NewRow();
    dRow["FileName"] = item.FileName;
    dRow["FilePath"] = item.FilePath;
    FilesTable.Rows.Add(dRow);
}

答案 1 :(得分:0)

非常感谢SOOO。这些答案(部分)都有助于解决我的问题。 我必须添加其他有同样问题的人....我发现显示我的数据需要一个额外的项目:

 dataGridView2.DataSource = d;

诚然,我不完全理解为什么这些代码是必要的,因为我从数据网格视图中绑定了表...但这是我的最后一块拼图。 再次感谢你们!