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 に答える