首页 新闻 会员 周边 捐助

C#里有没有类似JAVA的File.seperator 属性啊?可以根据平台不同输出分隔符?

0
[已解决问题] 解决于 2019-04-04 14:41

JAVA的File.seperator会根据系统环境输出分隔符 windwos时输出\ linux输出/,在拼接字符串时 非常灵活。
请问C#有吗? 
目前C#系统就有个需求,FTP上传 远程路径的字符串拼接时 WIN平台的目录时用\而LInux平台时需要用/
根据平台区分的两套方法维护太蠢了。

吴顶天的主页 吴顶天 | 初学一级 | 园豆:39
提问于:2018-06-25 15:53
< >
分享
最佳答案
0

你从来都不用 Path.combine 的么?

奖励园豆:5
爱编程的大叔 | 高人七级 |园豆:30844 | 2018-06-25 16:03

上传 3.2-10.csv 文件,远程路径写的是Details 结果就因为斜杠\的问题,并没有上传到Details目录里,如果手动改成反斜杠 /就可以。
我是用如下方法拼接的路径
public string StringCombine(params string[] str)
{
StringBuilder sb = new StringBuilder();
foreach (var item in str)
{
sb.Append(item);
if (item != str[str.Length - 1])
{
sb.Append(Path.DirectorySeparatorChar);
}
}


return sb.ToString();
}

 

用Path.Combine也没用,就是斜杠的问题,WIN平台默认就转换成是\

吴顶天 | 园豆:39 (初学一级) | 2018-06-25 17:41

@Dellienware: 

通常我是这样用的,

var BasePath=GetAppPath();  //系统或者应用路径,有内置函数

var myPath= Path.combine(basePath, FolderPath);

var myFile=Path.combine(myPath, FileName);

....

爱编程的大叔 | 园豆:30844 (高人七级) | 2018-06-26 09:30

@爱编程的大叔: 是这样的,我是操作文件上传到对方搭建的SFTP平台,可是我根本无法判断对方的SFTP是在WIN还是在LINUX下搭建的啊,不同平台下 斜杠方向不一样....

吴顶天 | 园豆:39 (初学一级) | 2018-07-10 16:45

@Dellienware: 有个HACK招,不一定有效,PING对方机器,通过TTL判断对方系统。

当然,或者你想想有其他方法也是可以的。

 

所以你这问题根本就是问错了。

你应该问的是如何在客户端判断FTP服务器的系统是啥系统。

爱编程的大叔 | 园豆:30844 (高人七级) | 2018-07-10 16:52
其他回答(1)
0

路径拼接用Path.Combine 是可以跨平台的.

当然你也可以用Path.DirectorySeparatorChar拼接

//显示特定平台的目录符
Console.WriteLine(@"Path.DirectorySeparatorChar={0}", Path.DirectorySeparatorChar);

使用mono/.net core分别在Windows/Linux打印出来

秋壶冰月 | 园豆:5903 (大侠五级) | 2018-06-25 21:02

是这样的,我是操作文件上传到对方搭建的SFTP平台,可是我根本无法判断对方的SFTP是在WIN还是在LINUX下搭建的啊,不同平台下 斜杠方向不一样....

支持(0) 反对(0) 吴顶天 | 园豆:39 (初学一级) | 2018-07-10 16:45

@Dellienware: 这个不管java还是.Net 都是在你本机,还是要你知道对方的操作系统.做针对性的处理.JAVA的File.seperator也没有牛逼到能判断对方的操作系统吧

支持(0) 反对(0) 秋壶冰月 | 园豆:5903 (大侠五级) | 2018-07-10 18:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册