为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
红颜莎娜 2022-07-10 10:17:47
我试图在每次生成字符串时使用'/'charDirectory.GetFiles或不替换字符串来获取路径。即使我有一些宏告诉他在特定操作系统上使用 AltSeperator,Directory.GetDirectories我也会简单地要求库用作目录分隔符。'/'
查看完整描述

2 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

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

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

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



查看完整回答
反对 回复 2022-07-10
?
HUWWW

TA贡献1874条经验 获得超12个赞

一般技术:


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



查看完整回答
反对 回复 2022-07-10
  • 2 回答
  • 0 关注
  • 226 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号