gpt4 book ai didi

.net - Directory.GetParent 中的错误?

转载 作者:行者123 更新时间:2023-12-04 00:57:35 27 4
gpt4 key购买 nike

我被 System.IO.Directory.GetParent 的一个非常奇怪的行为击中了脸方法:

string path1 = @"C:\foo\bar";
DirectoryInfo parent1 = Directory.GetParent(path1);
Console.WriteLine (parent1.FullName); // Prints C:\foo, as expected

// Notice the extra backslash. It should still refer to the same location, right ?
string path2 = @"C:\foo\bar\";
DirectoryInfo parent2 = Directory.GetParent(path2);
Console.WriteLine (parent2.FullName); // Prints C:\foo\bar !!!

我会认为这是一个错误,但这种方法自 1.0 以来就存在,所以我想现在应该已经检测到了。另一方面,如果它是设计的,我想不出对这样的设计合理的解释......

你怎么看?这是一个错误吗?如果不是,你如何解释这种行为?

最佳答案

一些谷歌搜索显示 some thoughts :

DirectoryInfo di = new DirectoryInfo(@"C:\parent\child");
Console.WriteLine(di.Parent.FullName);

and

DirectoryInfo di = new DirectoryInfo(@"C:\parent\child\");
Console.WriteLine(di.Parent.FullName);

Both return "C:\parent"

I can only assume Directory.GetParent(...) can't assume that C:\parent\child is a directory instead of a file with no file extension. DirectoryInfo can, because you're constructing the object that way.



我个人认为,当有反斜杠时,字符串被视为目录内“空文件”的路径(即没有名称和扩展名的文件)。显然,那些可以存在(应该有一个链接,但由于某种原因我找不到任何东西)。

尝试构建一个 FileInfo对象外 path2 .你会看到它的构造正确,有 String.Empty作为其名称和扩展名,不存在且具有 C:\foo\bar作为其 DirectoryName .鉴于此,这种情况是有道理的:这个“空文件”的父对象确实是 C:\foo\bar .

关于.net - Directory.GetParent 中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3964037/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com