【问题标题】:How to find the Name of the Subfolder in a Directory如何在目录中查找子文件夹的名称
【发布时间】:2012-07-12 10:03:37
【问题描述】:

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

例如:

我明白了

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

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

【问题讨论】:

  • “我需要的只是插件”是什么意思?您是否尝试将最深的公共目录视为相对路径的根目录?
  • 产生此输出的 7 个文件名是什么?
  • 您是指 C:\ 中的根文件夹还是父文件夹,还是什么?您需要详细说明,我们需要更多详细信息:)
  • @FishBasketGordo 有点像,插件在 NetOffice 中,这就是为什么我不需要它,插件是一个子目录。对不起,如果我很困惑,我真的不能很好地解释事情。
  • 那么前四个路径应该得到什么?没有? “\”?

标签: c# file path directory substring


【解决方案1】:

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

  • 你手头有一个文件路径
  • 该文件位于高于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();

【讨论】:

  • 是的,您的假设是正确的,但我不能使用它,是的,我已经尝试过了,但如果它不在行中,则不会显示任何内容。文件夹,我使用的是 DataSet带有数据网格。有没有办法用 Substring 做到这一点?
  • @SovietOnion: NetOffice 可能有很多子目录,这不适合row.Folder,因为只有一个字符串的空间。你是说你希望确切地总是一个目录?
  • 是的,插件,它是唯一的一个。
  • @SovietOnion:我编辑了我的答案以说明NetOffice 下只有一个目录。
【解决方案2】:
            string rootDir = folderBrowserDialog.SelectedPath;
            string fileDir = Path.GetDirectoryName(fileName);
            if (rootDir.Length < fileDir.Length)
                row.FOLDER = fileDir.Substring(rootDir.Length + 1);

成功了。

【讨论】:

    【解决方案3】:

    例如: 您在文件夹 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;
    

    【讨论】:

      猜你喜欢
      • 2013-03-19
      • 2012-11-12
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      相关资源
      最近更新 更多