C# 带有'/';在任何平台上
我正在尝试使用C# 带有'/';在任何平台上,c#,path-separator,C#,Path Separator,我正在尝试使用Directory.GetFiles或Directory.GetDirectories获取带有'/'字符的路径,但每次生成一个字符串时都不替换该字符串。我会简单地要求librarie使用'/'作为目录分隔符,即使我有一些宏告诉他在特定操作系统上使用altseparator。不幸的是,这似乎不可能 Path.directorysepartorchar和Path.altdirectorysepartorchar取决于应用程序运行的操作系统,并且是只读的 directoryseparto
Directory.GetFiles
或Directory.GetDirectories
获取带有'/'
字符的路径,但每次生成一个字符串时都不替换该字符串。我会简单地要求librarie使用'/'
作为目录分隔符,即使我有一些宏告诉他在特定操作系统上使用altseparator。不幸的是,这似乎不可能
Path.directorysepartorchar
和Path.altdirectorysepartorchar
取决于应用程序运行的操作系统,并且是只读的
directorysepartorchar
是Windows上的\
和其他地方的/
以及路径。altdirectorysepartorchar
是(当前)始终/
通用技术:
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));
我认为这是一个字符串操作问题。@Joshua我真的看不出问题所在,我应该能够在使用该函数之前交换分隔符,然后将其取回。就这么简单。在文件名中有\之前(在\不是分隔符的系统上是允许的)。我想使用Unity确实需要做出很多牺牲^^“无论如何,谢谢你的回答。我当然更喜欢自己的常数,其值根据操作系统设置。编辑:我忘了我使用的是系统功能,所以我默认的解决方案是替换。没有重要到花时间在上面。无论如何,这可能永远不会令人满意。
IEnumerable<string> GetFilesSlash(string dirname)
=> Directory.GetFiles(dirname.Replace('/', Path.DirectorySeparatorCharacter)).Select((p) => p.Replace(Path.DirectorySeparatorChar, '/'));