我正在编写一个应用程序在C#中编译并在Windows下运行,但它将部分负责上载文件到文件夹结构上Linux服务器。在我的Windows应用程序中,我希望能够轻松地将Linux目录和文件名与Path.Combine结合在一起。有没有办法用不同的路径分隔符来暂时覆盖Path.Combine?使用Path.Combine()在Windows系统上形成一个Linux路径
4
A
回答
2
你应该做的是创建samba共享目录。
这样你就可以像访问windows网络路径一样访问它。
var path = @"\\"+linuxHostname + @"\sambaShare\";
但是,为了回答你的问题,你不能改变Path.Combine
斜线..也许一个字符串替换会做什么?
var linuxPath = winPath.Replace('\\','/');
1
如果你只是想结合,有我的解决方案
public static string PathCombine(string pathBase, char separator = '/', params string[] paths)
{
if (paths == null || !paths.Any())
return pathBase;
#region Remove path end slash
var slash = new[] { '/', '\\' };
Action<StringBuilder> removeLastSlash = null;
removeLastSlash = (sb) =>
{
if (sb.Length == 0) return;
if (!slash.Contains(sb[sb.Length - 1])) return;
sb.Remove(sb.Length - 1, 1);
removeLastSlash(sb);
};
#endregion Remove path end slash
#region Combine
var pathSb = new StringBuilder();
pathSb.Append(pathBase);
removeLastSlash(pathSb);
foreach (var path in paths)
{
pathSb.Append(separator);
pathSb.Append(path);
removeLastSlash(pathSb);
}
#endregion Combine
#region Append slash if last path contains
if (slash.Contains(paths.Last().Last()))
pathSb.Append(separator);
#endregion Append slash if last path contains
return pathSb.ToString();
}
有了这个,你可以调用
PathCombine("/path", paths: new[]{"to", "file.txt"});
// return "/path/to/file.txt"
PathCombine(@"\\path", '\\', "to", "file.txt");
// return @"\\path\to\file.txt"
PathCombine("/some/bin:paths/bin", ':', "/another/path", "/more/path");
// return "/some/bin:paths/bin:/another/path:/more/path"
相关问题
- 1. Maven Exec插件不能在Windows上使用系统路径?
- 2. 如何为Linux Windows子系统转换Windows路径
- 3. 在Windows上使用Sublime Text和在Windows上使用Eslint linux子系统
- 4. 寻找在Windows系统上安装Git的路径
- 5. 使用teamviewer从Windows访问Linux系统?
- 6. Jaxb系统路径
- 7. 在Make和Windows中使用环境变量来形成路径
- 8. 在Linux中查找静态系统库的路径
- 9. 在Python中查找linux系统二进制文件的路径
- 10. 如何在一个操作系统中安装oracle并在其他操作系统(windows和linux)中使用
- 11. 发现系统路径
- 12. 系统路径与Sys.getenv('PATH')
- 13. 为什么Path.Combine用相对路径产生这个结果?
- 14. 如何在不同的linux系统上决定库安装路径?
- 15. 编写一个系统调用linux
- 16. 如何在C++中生成一个独立于操作系统的路径
- 17. 在Python中将SVN路径翻译成本地文件系统路径
- 18. 在Windows下自动添加Python路径到PATH系统变量
- 19. 在Linux上seteuid系统调用?
- 20. 在Windows中使用不同的操作系统和服务器路径
- 21. 在Ubuntu中显示matplotlib图(Linux子系统的Windows子系统)
- 22. Django路径,在Windows中开发,部署在Linux上
- 23. 的.htaccess服用文件系统路径
- 24. NVM是否正在使用最新的Windows Linux子系统(WSL)?
- 25. log4j2 RollingFile在Windows上提供了“系统找不到指定的路径”
- 26. 计算路径的相对一些根 - Path.Combine
- 27. 如何在Visual Studio 2005中编辑生成系统路径
- 28. Linux上的chromedriver的路径
- 29. 关于Linux操作系统上的图形用户界面
- 30. 在没有xserver的linux系统上绘制Python图形
你可以只包了'Path.Combine()'调用和添加一个'Replace'到结果。 – 2014-09-26 19:49:00
你知道Windows和Linux路径之间有更多的区别,而不仅仅是分隔符,对吗? – hvd 2014-09-26 20:00:31
对于本地路径,窗口将同时接受'/'和'''''。这当然不适用于网络路径。 – paqogomez 2014-09-26 20:02:30