【问题标题】:Is there a better way to hold a file path than in a string?有没有比字符串更好的方法来保存文件路径?
【发布时间】:2010-07-28 14:48:52
【问题描述】:

我正在制作一个命令行实用程序。我需要在程序中传递一些文件路径。

现在我只使用string。但我想知道 .net 库是否有一个很酷的类来传递文件路径。

【问题讨论】:

    标签: c# path


    【解决方案1】:

    嗯,有FileInfo - 差不多就是你得到的。

    【讨论】:

    • 我在之前的一些项目中使用过FileInfo,真的很不错,如果你只是想读取一个文件,使用一个字符串,如果你想管理文件、文件夹并对其进行一些操作,使用FileInfo
    【解决方案2】:

    字符串是存储路径的最佳方式。

    如果您需要修改或使用路径,则应使用 System.IO.Path

    如果您想要更健壮的东西,并且可以实际与文件/目录交互,您还可以查看 FileInfoDirectoryInfo。但请记住,如果您只需要存储路径,这两种方法都非常繁重。

    【讨论】:

    • 它们重吗?开销是多少?
    • 开销是,你有一个大的 ol' 对象,而不是一个简单的字符串,它有许多占用内存的成员字段。还有创建对象的成本。尤其是构造函数,包括大量昂贵的调用,其中一些调用在 .NET 框架之外,甚至可能导致磁盘 I/O。
    【解决方案3】:

    基类库将路径表示为字符串,但也有开源替代方案。 NDepend.Helpers.FileDirectoryPath 是一个用于以强类型方式操作路径的开源库。

    【讨论】:

      【解决方案4】:

      DirectoryInfo 对象可以保存文件路径和有关目录的任何相关信息,FileInfo 也可以保存单个文件的信息和路径。

      【讨论】:

        【解决方案5】:

        贾斯汀尼斯纳的回答非常好......但只是补充一点: System.Io.Path 也有一些静态方法可以提供帮助,因此我们不必担心额外的“斜杠”和跨平台差异(例如反斜杠/正斜杠)。

        例如:您可以使用 .Join(或 .Combine):

        var readFile = new StreamReader(Path.Join(filePath, inputFileName));
        

        【讨论】:

          猜你喜欢
          • 2013-03-04
          • 1970-01-01
          • 2011-03-22
          • 2011-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多