C# 代码可以在其中运行的不同环境对于文件和目录路径必须是什么样子有不同的约定/规则。
一个常见的例子是分隔目录级别的字符。
在 Windows 上,它是 \
,在 Linux 上,它是 /
,还有其他(也是 future 的)系统可能遵循甚至不同的规则。
为了创建健壮的代码,建议始终使用 Path.DirectorySeparatorChar
(或者,当然,使用辅助方法,例如 Path.Combine
)而不是硬编码特定的目录分隔符。
现在,在各种系统上,有一些可以在路径中使用的“伪目录名”:
.
代表当前目录..
表示父目录,即当前目录的上一级
虽然这些在 Windows 和 Linux 上碰巧是相同的,但其他环境(Mono 可以在其上运行)可能遵循不同的语法。
我不想对这些伪目录名称进行硬编码。如何在运行时检索它们?
最佳答案
我认为这不是问题。 /
适用于 Windows、Unix 和 Linux。 ..
和 .
相同。它也是用于网络路径的统一命名约定的一部分。
在 Mono 的 Path
类实现中,..
和 .
甚至是 hardcoded .如果底层框架确实如此,我认为避免硬编码没有任何意义。
摘录:
internal static void CheckSearchPattern(String searchPattern)
{
int index;
while ((index = searchPattern.IndexOf("..", StringComparison.Ordinal)) != -1) {
if (index + 2 == searchPattern.Length) // Terminal ".." . Files names cannot end in ".."
throw new ArgumentException(Environment.GetResourceString("Arg_InvalidSearchPattern"));
if ((searchPattern[index+2] == DirectorySeparatorChar)
|| (searchPattern[index+2] == AltDirectorySeparatorChar))
throw new ArgumentException(Environment.GetResourceString("Arg_InvalidSearchPattern"));
searchPattern = searchPattern.Substring(index + 2);
}
}
关于c# - 是否有一种与系统无关的方法来确定表示当前目录级别和父目录级别的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52722655/