你从来都不用 Path.combine 的么?
上传 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平台默认就转换成是\
@Dellienware:
通常我是这样用的,
var BasePath=GetAppPath(); //系统或者应用路径,有内置函数
var myPath= Path.combine(basePath, FolderPath);
var myFile=Path.combine(myPath, FileName);
....
@爱编程的大叔: 是这样的,我是操作文件上传到对方搭建的SFTP平台,可是我根本无法判断对方的SFTP是在WIN还是在LINUX下搭建的啊,不同平台下 斜杠方向不一样....
@Dellienware: 有个HACK招,不一定有效,PING对方机器,通过TTL判断对方系统。
当然,或者你想想有其他方法也是可以的。
所以你这问题根本就是问错了。
你应该问的是如何在客户端判断FTP服务器的系统是啥系统。
路径拼接用Path.Combine 是可以跨平台的.
当然你也可以用Path.DirectorySeparatorChar拼接
//显示特定平台的目录符 Console.WriteLine(@"Path.DirectorySeparatorChar={0}", Path.DirectorySeparatorChar);
使用mono/.net core分别在Windows/Linux打印出来
是这样的,我是操作文件上传到对方搭建的SFTP平台,可是我根本无法判断对方的SFTP是在WIN还是在LINUX下搭建的啊,不同平台下 斜杠方向不一样....
@Dellienware: 这个不管java还是.Net 都是在你本机,还是要你知道对方的操作系统.做针对性的处理.JAVA的File.seperator也没有牛逼到能判断对方的操作系统吧