2012-07-12 91 views
1

我以前问过这种类型的问题,但这个问题不同。我需要找到一个文件夹的根文件夹。如何在目录中找到子文件夹的名称

例如:

我得到的是

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 

它接近,但我需要的是所有我需要的是插件。我试过做路径和文件,但它不会工作,我总是得到一个错误。

+1

你的意思是“我需要的是插件”?你是否试图将最深的通用目录作为相对路径的根目录? – FishBasketGordo 2012-07-12 15:45:43

+0

产生这个输出的7个fileNames是什么? – digEmAll 2012-07-12 15:46:12

+0

你的意思是在C:\或父文件夹中的根文件夹,或者是什么?您需要详细阐述一下,我们需要更多的细节:) – 2012-07-12 15:51:09

回答

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

该诀窍。

2

基于这个问题,不同的意见,我推断:

  • 你手上的文件路径
  • 该文件是在水平以上Plugins,即:

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

  • You nee d拿到目录该目录下,但不是目录本身

如果这些假设成立属实,那么这将做什么你问:

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

var directory = new DirectoryInfo(directoryName); 

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

是的,你得到了正确的假设,但我不能使用它,是的,我已经尝试过,但如果它不会在row.Folder,我没有显示出来,我正在使用DataSet与数据网格。有没有办法用一个子字符串来做到这一点? – 2012-07-12 16:53:24

+0

@SovietOnion:'NetOffice'可能有许多子目录,它们不适合'row.Folder',因为只有一个字符串的空间。你是说你期望*完全*一个目录总是? – 2012-07-12 17:03:41

+0

是的,插件,它是唯一一个。 – 2012-07-12 18:34:46

0

例如: 你必须在文件夹NetOffice的子文件插件,与路径:

C:\ Program Files文件(x86)的\ EdisonFactory \ NetOffice \插件。

而且你想只获取文件夹插件的名称,你可以试试下面的代码:

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; 
相关问题