web-dev-qa-db-ja.com

OpenFileDialogパス/ファイル名からのパスの抽出

ファイルを選択することから始まる小さなユーティリティを書いています。そして、フォルダを選択する必要があります。デフォルトのフォルダを選択したファイルの場所にしたいと思います。

OpenFileDialog.FileNameフルパスとファイル名を返します-私が欲しいのはパス部分(ファイル名を除く)です。これを初期値として使用できます- 選択したフォルダー

    private System.Windows.Forms.OpenFileDialog ofd;
    private System.Windows.Forms.FolderBrowserDialog fbd;
    ...
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        string sourceFile = ofd.FileName;
        string sourceFolder = ???;
    }
    ...
    fbd.SelectedPath = sourceFolder; // set initial fbd.ShowDialog() folder
    if (fbd.ShowDialog() == DialogResult.OK)
    {
       ...
    }

これを行うための.NETメソッドはありますか、regex, split, trim,などを使用する必要がありますか?

75
Kevin Haines

Path クラスを System.IO から使用します。 GetDirectoryName を含むファイルパスを操作するための便利な呼び出しが含まれています。これは、ファイルパスのディレクトリ部分を返します。

使い方は簡単です。

string directoryPath = Path.GetDirectoryName(filePath);
104
Jeff Yates

これはどう:

string fullPath = ofd.FileName;
string fileName = ofd.SafeFileName;
string path = fullPath.Replace(fileName, "");
27
Jan Macháček
if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
{
    strfilename = openFileDialog1.InitialDirectory + openFileDialog1.FileName;
}
13
Max

FileDialogの代わりにFolderBrowserDialogを使用して、OKの結果からパスを取得できます。

FolderBrowserDialog browser = new FolderBrowserDialog();
string tempPath ="";

if (browser.ShowDialog() == DialogResult.OK)
{
  tempPath  = browser.SelectedPath; // prints path
}
7
Shaahin

これを行う簡単な方法を次に示します。

string fullPath =openFileDialog1.FileName;
string directory;
directory = fullPath.Substring(0, fullPath.LastIndexOf('\\'));
0
Abdel