web-dev-qa-db-ja.com

ファイル名を含むパスからファイル名なしのフルパスを取得

System.IO.Pathにファイルパスだけを提供するものはありますか?

たとえば、stringがある場合

@ "c:\ webserver\public\myCompany\configs\promo.xml"、

私に与えるBCLメソッドはありますか

「c:\ webserver\public\myCompany\configs \」?

175
CantSleepAgain

Path.GetDirectoryName()...しかし、パスに渡すパスにはファイル名が含まれていることを知っておく必要があります。ファイル名かディレクトリ名かに関係なく、パスから最後のビットを削除するだけです(実際にはどちらなのかわかりません)。

最初にパスでFile.Exists()および/またはDirectory.Exists()をテストして、Path.GetDirectoryNameを呼び出す必要があるかどうかを確認することにより、最初に検証できます。

208
Andrew Barber
Console.WriteLine(Path.GetDirectoryName(@"C:\hello\my\dear\world.hm")); 
61
explorer

Path.GetDirectoryName()はディレクトリ名を返します。そのため、(末尾の逆ソリッド文字を使用して)必要なものについてはPath.GetDirectoryName(filePath) + Path.DirectorySeparatorCharを呼び出すことができます。

48
Jon Hanna
    string fileAndPath = @"c:\webserver\public\myCompany\configs\promo.xml";

    string currentDirectory = Path.GetDirectoryName(fileAndPath);

    string fullPathOnly = Path.GetFullPath(currentDirectory);
6
Kobie Williams

示されているように「GetParent()」を使用すると、うまく機能します。 必要に応じてエラーチェックを追加します。

var fn = openFileDialogSapTable.FileName;
var currentPath = Path.GetFullPath( fn );
currentPath = Directory.GetParent(currentPath).FullName;
5
kevinwaite

私はこれを使用し、それはうまく機能します:

string[] filePaths = Directory.GetFiles(Path.GetDirectoryName(dialog.FileName));

foreach (string file in filePaths)
{   
    if (comboBox1.SelectedItem.ToString() == "")
    {
        if (file.Contains("c"))
        {
            comboBox2.Items.Add(Path.GetFileName(file));
        }
    }
}
4
Karam