Directory.GetFiles 在任何平台上都带有“/”

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



红颜莎娜
浏览 227回答 2
2回答

侃侃尔雅

不幸的是,这似乎是不可能的。Path.DirectorySeparatorChar并Path.AltDirectorySeparatorChar取决于您的应用程序运行的操作系统,并且是只读的。根据文档 DirectorySeparatorChar在\Windows 和/其他任何地方,并且Path.AltDirectorySeparatorChar(当前)总是/.

HUWWW

一般技术:string MyPathCombine(string basename, string filename){&nbsp; &nbsp; int idx = basename.Length;&nbsp; &nbsp; if (idx == 0) return filename;&nbsp; &nbsp; if (basename[idx - 1] == '/') --idx;&nbsp; &nbsp; return filename;}IEnumerable<string> GetFilesSlash(string dirname)&nbsp; &nbsp; => Directory.GetFiles(dirname.Replace('/', Path.DirectorySeparatorCharacter)).Select((p) => MyPathCombine(dirname, Path.GetFileName(p));如果你所有的路径都来自真实系统,这种更简单的形式会起作用,但如果有任何来自另一个系统,它就不会,因为你可能会被\角色毒化。然而,这并不是唯一的危险。从这里开始变得颠簸。IEnumerable<string> GetFilesSlash(string dirname)&nbsp; &nbsp; => Directory.GetFiles(dirname.Replace('/', Path.DirectorySeparatorCharacter)).Select((p) => p.Replace(Path.DirectorySeparatorChar, '/'));
打开App,查看更多内容
随时随地看视频慕课网APP