Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有'/';在任何平台上_C#_Path Separator - Fatal编程技术网

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, '/'));