Path.GetDirectoryName 如何工作?

M.k*_*ary 6 c# path openfiledialog

当我使用OpenFileDialog“打开文件”时,当然我需要获取文件目录及其名称来加载文件。(要加载xml,要访问文件,我需要完整路径。)

opd打开文件对话框

        if (opd.ShowDialog() == true)
        {
            var names = opd.FileNames;

            foreach (string name in names)
            {
                LoadFile(Path.Combine(Path.GetDirectoryName(name), name));
            }
        }
Run Code Online (Sandbox Code Playgroud)

我的问题是如何Path.GetDirectoryName通过仅获取字符串来获取文件的路径?

Path.GetDirectoryName(name)
Run Code Online (Sandbox Code Playgroud)

name是 Juststring并且此方法仅通过字符串获取其目录?。计算机内可能有数千个同名文件。

简短问题:在哪里opd 引用

编辑:

我认为opd.FileNames只需要文件名。(因为方法名称)

我还发现了一些有趣的事情。

LoadFile(Path.Combine(Path.GetDirectoryName(name), name));
Run Code Online (Sandbox Code Playgroud)

这工作正常,因为Path.Combine只会跳过字符串的相同部分。

前任:

string name = @"C:\Users\Default\xml.xml";
string getDirNameResault= Path.GetDirectoryName(name);// this will be C:\Users\Default
Run Code Online (Sandbox Code Playgroud)

所以 Path.Combine 将是

 Path.Combine(@"C:\Users\Default", @"C:\Users\Default\xml.xml)
Run Code Online (Sandbox Code Playgroud)

女巫归来"C:\Users\Default\xml.xml"

Cod*_*ter 3

name 是 Just string 并且此方法仅通过字符串获取其目录?。计算机内可能有数千个同名文件。

name包含完整路径,Path.GetDirectoryName()只是删除最后一个目录分隔符之后的所有内容,Path.Combine(Path.GetDirectoryName(name), name) 不会做任何有用的事情

如果 path2 包含根,则返回 path2。

直接使用就可以了name