我该如何处理c#中的windows/Linux路径

Emi*_*nem 8 c# path

我的目的是让我的应用程序在Windows和Linux上运行.
该应用程序将使用某种目录结构,例如

appdir/  
      /images
      /sounds
Run Code Online (Sandbox Code Playgroud)

处理windows和linux之间的文件(路径)命名差异的好方法是什么?我不想为每个平台编码变量.例如伪代码

if #Win32
  string pathVar = ':c\somepath\somefile.ext';
else 
  string pathVar = '/somepath/somefile.ext';
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 17

你可以使用Path.DirectorySeparatorCharacter常量,它将是\/.

或者,使用创建路径Path.Combine,这将自动插入正确的分隔符.

  • 您是说[`Path.DirectorySeparatorChar`](https://msdn.microsoft.com/en-us/library/system.io.path.directoryseparatorchar%28v=vs.110%29.aspx)吗? (2认同)

dso*_*ano 6

如何使用System.IO.Path.Combine来形成你的路径?

窗口示例:

var root = @"C:\Users";
var folder = "myuser";
var file = "text.txt";
var fullFileName = System.IO.Path.Combine(root, folder, file);

//Result: "C:\Users\myuser\text.txt"
Run Code Online (Sandbox Code Playgroud)

Linux 示例:

var root = @"Home/Documents";
var folder = "myuser";
var file = "text.txt";
var fullFileName = System.IO.Path.Combine(root, folder, file);

//Result: "Home/Documents/myuser/text.txt"
Run Code Online (Sandbox Code Playgroud)

  • 如果您在 Windows 上运行代码时需要使用 Linux 路径怎么办? (3认同)