0

我已经foreach按文件名列出了所有使用的项目。现在,如何在第二列中添加第一列中列出的每个文件的路径?我已经在属性上添加了列或集合。

    foreach (string filePath in Directory.GetFiles(path, fileType, SearchOption.AllDirectories))
    {
        string fileName = Path.GetFileName(filePath);
        listViewFiles.Items.Add(fileName);
    }
4

4 回答 4

2

尝试这个:

// Set up List View
listViewFiles.View = View.Details;
listViewFiles.Columns.Clear();
listViewFiles.Columns.Add("File name");
listViewFiles.Columns.Add("File path");

// Populate with files and file paths
foreach (string filePath in Directory.GetFiles(path, fileType, SearchOption.AllDirectories))
{
    string fileName = Path.GetFileName(filePath);
    listView1.Items.Add(fileName).SubItems.Add(new FileInfo(fileName).DirectoryName);
}

编辑:

就个人而言,我发现为这种事情实例化 DirectoryInfo 更容易,它为您填充了许多有用的字段。所以你可以这样做:

DirectoryInfo di = new DirectoryInfo(path);
foreach (FileInfo fi in di.GetFiles(fileType, SearchOption.AllDirectories))
    listViewFiles.Items.Add(fi.Name).SubItems.Add(fi.DirectoryName);
于 2013-11-04T09:28:08.643 回答
1

如果您想知道如何提取路径(不带文件名),请创建一个 FileInfo 对象并读出其 DirectoryName 属性:

var fi = new FileInfo(filename);
var dir = fi.DirectoryName;
于 2013-11-04T09:31:41.437 回答
1

你可以做:

foreach (string filePath in Directory.GetFiles(path, fileType, SearchOption.AllDirectories))
{
    string fileName = Path.GetFileName(filePath);
    string directoryName = Path.GetDirectoryName(filePath);
    listViewFiles.Items.Add(fileName, directoryName);
}

有关详细信息,请参阅ListViewItem构造函数。

于 2013-11-04T09:36:29.533 回答
1

您可以使用子项目:

foreach (string filePath in Directory.GetFiles(path, fileType, SearchOption.AllDirectories))
{
    FileInfo fi = new FileInfo(filepath);        
    listViewFiles.Items.Add(fi.Name).SubItems.Add(fi.DirectoryName);
}

编辑:我将其修改为具有文件名和文件目录

于 2013-11-04T09:33:22.593 回答