3

我试图在每次生成字符串时使用'/'charDirectory.GetFiles或不替换字符串来获取路径。即使我有一些宏告诉他在特定操作系统上使用 AltSeperator,Directory.GetDirectories我也会简单地要求库用作目录分隔符。'/'

4

2 回答 2

3

不幸的是,这似乎是不可能的。

Path.DirectorySeparatorCharPath.AltDirectorySeparatorChar取决于您的应用程序运行的操作系统,并且是只读的。

根据文档 DirectorySeparatorChar\Windows 和/其他任何地方,并且Path.AltDirectorySeparatorChar(当前)总是/.

于 2019-01-05T17:45:29.680 回答
0

一般技术:

string MyPathCombine(string basename, string filename)
{
    int idx = basename.Length;
    if (idx == 0) return filename;
    if (basename[idx - 1] == '/') --idx;
    return filename;
}


IEnumerable<string> GetFilesSlash(string dirname)
    => Directory.GetFiles(dirname.Replace('/', Path.DirectorySeparatorCharacter)).Select((p) => MyPathCombine(dirname, Path.GetFileName(p));

如果您的所有路径都来自真实系统,则这种更简单的形式会起作用,但如果有任何路径来自另一个系统,则不会,因为您可能会被\角色毒害。然而,这并不是唯一的危险。从这里开始变得颠簸。

IEnumerable<string> GetFilesSlash(string dirname)
    => Directory.GetFiles(dirname.Replace('/', Path.DirectorySeparatorCharacter)).Select((p) => p.Replace(Path.DirectorySeparatorChar, '/'));
于 2019-01-07T04:00:49.687 回答