如何在目录中查找子文件夹的名称

时间:2012-07-12 15:41:03

标签: c# file path directory substring

我以前曾问过这种类型的问题,但这个问题是不同的。我需要找到文件夹的根文件夹。

例如:

我得到的是

C:\Program Files (x86)\EdisonFactory\NetOffice
C:\Program Files (x86)\EdisonFactory\NetOffice
C:\Program Files (x86)\EdisonFactory\NetOffice
C:\Program Files (x86)\EdisonFactory\NetOffice
C:\Program Files (x86)\EdisonFactory\NetOffice\Plugins
C:\Program Files (x86)\EdisonFactory\NetOffice\Plugins
C:\Program Files (x86)\EdisonFactory\NetOffice\Plugins

之前我使用过这段代码:

DsVersions.ASSEMBLY2Row row = dsVersions.ASSEMBLY2.NewASSEMBLY2Row();
row.FOLDER = Path.GetDirectoryName(fileName);

然后我找到了这段代码,并认为这是答案:

DsVersions.ASSEMBLY2Row row = dsVersions.ASSEMBLY2.NewASSEMBLY2Row();
DirectoryInfo directoryName = new DirectoryInfo(Path.GetDirectoryName(fileName));
row.FOLDER = directoryName.Name;

在这段代码之后我得到了这个:

NetOffice
NetOffice
NetOffice
NetOffice
Plugins
Plugins
Plugins

它很接近,但我需要的只是插件。我已经尝试过做Path和File但它不起作用,我总是收到错误。

3 个答案:

答案 0 :(得分:3)

根据问题和各种评论,我推断:

  • 您手头有一个文件路径
  • 该档案位于上方 Plugins,即:

C:\Program Files (x86)\EdisonFactory\NetOffice

  • 您需要在目录下获取目录,而不是该目录本身

如果这些假设成立,那么这将按照你的要求行事:

var directoryName = "C:\Program Files (x86)\EdisonFactory\NetOffice";

var directory = new DirectoryInfo(directoryName);

row.FOLDER = directory
    .GetDirectories()
    .Select(subDirectory => subDirectory.Name)
    .Single();

答案 1 :(得分:1)

            string rootDir = folderBrowserDialog.SelectedPath;
            string fileDir = Path.GetDirectoryName(fileName);
            if (rootDir.Length < fileDir.Length)
                row.FOLDER = fileDir.Substring(rootDir.Length + 1);

这就是诀窍。

答案 2 :(得分:1)

例如: 你有文件夹NetOffice中的子文件夹插件,路径:

  

C:\ Program Files(x86)\ EdisonFactory \ NetOffice \ Plugins。

如果您只想获取文件夹插件的名称,可以尝试以下代码:

string path = @"C:\Program Files (x86)\EdisonFactory\NetOffice";
DirectoryInfo Dictiontory = new DirectoryInfo(path);
DirectoryInfo []Dir = Dictiontory.GetDirectories();// this get all subfolder //name in folder NetOffice.
string dirName = Dir[0]; //var dirName get name from array Dir;