3

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

例如:

我得到的是

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

它很接近,但我需要的只是插件。我试过做路径和文件,但它不起作用,我总是得到一个错误。

4

3 回答 3

4

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

  • 你手头有一个文件路径
  • 该文件位于上述级别 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();
于 2012-07-12T16:41:29.503 回答
1
            string rootDir = folderBrowserDialog.SelectedPath;
            string fileDir = Path.GetDirectoryName(fileName);
            if (rootDir.Length < fileDir.Length)
                row.FOLDER = fileDir.Substring(rootDir.Length + 1);

那成功了。

于 2012-07-12T20:17:15.557 回答
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;
于 2015-10-19T12:06:11.240 回答