我已使用foreach
列出所有项目的文件名。现在,如何在第二列中添加第一列中列出的每个文件的路径?我已经在属性上添加了一个列或集合。
foreach (string filePath in Directory.GetFiles(path, fileType, SearchOption.AllDirectories))
{
string fileName = Path.GetFileName(filePath);
listViewFiles.Items.Add(fileName);
}
答案 0 :(得分: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);
答案 1 :(得分:1)
如果您想知道如何提取路径(没有文件名),请创建一个FileInfo对象并读出其DirectoryName属性:
var fi = new FileInfo(filename);
var dir = fi.DirectoryName;
答案 2 :(得分:1)
您可以使用SubItems:
foreach (string filePath in Directory.GetFiles(path, fileType, SearchOption.AllDirectories))
{
FileInfo fi = new FileInfo(filepath);
listViewFiles.Items.Add(fi.Name).SubItems.Add(fi.DirectoryName);
}
编辑:我修改它以拥有文件名和文件目录
答案 3 :(得分: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构造函数。