【问题标题】:How should I handle windows/Linux paths in c#我应该如何在 c# 中处理 windows/Linux 路径
【发布时间】:2011-08-11 03:30:36
【问题描述】:

我的目的是让我的应用程序在 windows 和 linux 上运行。
应用程序将使用特定的目录结构,例如

appdir/  
      /images
      /sounds

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

if #Win32
  string pathVar = ':c\somepath\somefile.ext';
else 
  string pathVar = '/somepath/somefile.ext';

【问题讨论】:

    标签: c# path


    【解决方案1】:

    您可以使用Path.DirectorySeparatorChar 常量,即\/

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

    【讨论】:

    【解决方案2】:

    使用System.IO.Path.Combine 形成路径怎么样?

    Windows 示例:

    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"
    

    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"
    

    【讨论】:

    • 如果在 windows 上运行代码时需要使用 linux 路径怎么办?
    • @YarekT Path.Combine 旨在成为一个跨平台路径组合器。我没有在 Linux 上尝试过,但它应该可以工作。
    • 在 windows 上调用 Path.Combine 会创建 windows 路径。我的项目在其他 linux 机器上运行并与之交互,但我们的一些开发人员在 windows 上工作,所以这会产生不一致。
    【解决方案3】:

    如果您使用的是 Mono。在 System.IO.Path 类中你会发现:

    Path.AltDirectorySeparatorChar
    Path.DirectorySeparatorChar
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2021-09-18
      • 1970-01-01
      • 2013-04-21
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      相关资源
      最近更新 更多