【问题标题】:Show folder name from a path显示路径中的文件夹名称
【发布时间】:2014-08-02 13:50:31
【问题描述】:

我有一个问题,我想你可以帮助我。

我想比较两个目录,以下代码有效,但显示结果时出现问题。我想制作一个步骤列表,显示如何使两个目录的结构显示相同。

我有这段代码,但我不知道如何从目录 1 中添加文件夹名称 + 文件名:

System.IO.DirectoryInfo dir1 = new System.IO.DirectoryInfo(pathA);
System.IO.DirectoryInfo dir2 = new System.IO.DirectoryInfo(pathB);

// Take a snapshot of the file system.
IEnumerable<System.IO.FileInfo> list1 = dir1.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
IEnumerable<System.IO.FileInfo> list2 = dir2.GetFiles("*.*", System.IO.SearchOption.AllDirectories);

foreach (var v in queryList1Only)
{
    listbox_2f.Items.Add("Create: "+ dir2.FullName+ "\\" +   v.Name);
}

如何解决这个问题,我可以将目录 1 中的文件夹名称添加到列表框。

好的,我会给你一个例子,期望我有一个像这样的目录:C:\Users\User\Desktop\Test1 这个目录中的子目录和文件现在我必须显示一个列表如何使这些目录的结构相同从 C:\Users\Jonas\Desktop\Test2 开始,所以当我在 Test1 中例如文件夹 Test12 和其中的 text123.txt 文件时,路径为:C:\Users\User\Desktop\Test1\Test12\text123。 txt 谁可以在列表框中添加类似“创建:C:\Users\User\Desktop\Test2\Test12\text123.txt”的内容当然路径不是每次都一样

【问题讨论】:

  • 稍微看一下 FileInfo 类。 msdn.microsoft.com/en-us/library/… 它还具有诸如 DirectoryName 之类的方法/属性(您应该将其应用于 dir1 或 list1 中的任何文件。而且您可能想要“名称”而不是 FullName。字符串 fileName = @"C:\TMP\log.txt "; FileInfo fileInfo = new FileInfo(fileName); if (!fileInfo.Exists) { return; } Console.WriteLine("{0} 的 directoryName 为 {1}", fileName, fileInfo.DirectoryName);
  • 您的具体问题是什么?给我们举个例子,不是很清楚你想做什么。
  • @MarcelN。好的,我会给你一个例子,期望我有一个像这样的目录: C:\Users\User\Desktop\Test1 在这个目录中是子目录和文件现在我必须显示一个列表如何使这些目录的结构与 C 相同:\Users\Jonas\Desktop\Test2 所以当我在 Test1 例如文件夹 Test12 和这些带有路径的 text123.txt 文件时: C:\Users\User\Desktop\Test1\Test12\text123.txt我在列表框中添加了类似“创建:C:\Users\User\Desktop\Test2\Test12\text123.txt”的内容当然路径不是每次都一样

标签: c# wpf directory directoryinfo


【解决方案1】:

为了从路径中提取文件夹(也就是目录)名称,可以使用Path.GetDirectoryName()方法,详见:http://msdn.microsoft.com/en-us/library/system.io.path_methods%28v=vs.110%29.aspx

另外,请参考 C# 使用示例:http://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname%28v=vs.110%29.aspx

string filePath = @"C:\MyDir\MySubDir\myfile.ext";
string directoryName;
int i = 0;

while (filePath != null)
{
    directoryName = Path.GetDirectoryName(filePath);
    Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", filePath, directoryName);
    filePath = directoryName;
    if (i == 1)
    {
        filePath = directoryName + @"\";  // this will preserve the previous path
    }
    i++;
}
/*
This code produces the following output:

GetDirectoryName('C:\MyDir\MySubDir\myfile.ext') returns 'C:\MyDir\MySubDir'
GetDirectoryName('C:\MyDir\MySubDir') returns 'C:\MyDir'
GetDirectoryName('C:\MyDir\') returns 'C:\MyDir'
GetDirectoryName('C:\MyDir') returns 'C:\'
GetDirectoryName('C:\') returns ''
*/

问候,

【讨论】:

    猜你喜欢
    • 2011-09-11
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    相关资源
    最近更新 更多