7

我正在使用一个使用 Environment.NewLine 的库,因为它在编写文件时是换行符。我需要它来编写 Unix 格式的文件,因此想更改换行符。

我可以更改 Environment.NewLine 的值吗?

任何其他想法(除了转换文件创建后)?

4

7 回答 7

10

我可以更改 Environment.NewLine 的值吗?

不。如果您知道要为哪个平台编写代码,请为每个平台创建类并让它们有自己的实现。在最简单的情况下,这将如下所示:

public abstract class Platform { public abstract string Newline { get; } }

public sealed class Unix : Platform {
    public override string Newline { get { return "\n"; } }
}

等等,然后只使用适当类的实例。

于 2009-02-20T15:31:35.560 回答
1

根据 MSDN,Environment 类是密封的,因此您无法从它继承来更改值。据我所知,这是您能够做到的唯一方法。或者,您可以尝试创建一个扩展 Environment 类的部分类。我从来没有尝试过后者,所以不确定它是否会起作用。

于 2009-02-20T15:32:21.547 回答
1

Environment.Newline 正在返回托管 .Net 运行时的运行时环境的换行符。您不应该使用它来将换行符转换为另一个平台的换行符。

我建议实现您自己的转换类。

于 2009-02-20T15:41:11.027 回答
0

Environment.NewLine 属性常量,所以没有改变它。我可以推荐的最好的事情是将使用它的任何地方更改为您自己的常量。

于 2009-02-20T15:32:34.403 回答
0

第三方库是写入流还是将文件名传递给它?

在前一种情况下,您可以传递一个 MemoryStream ,然后在换行符上进行替换以获得您想要的。在后者中,将其写入临时文件,然后流式传输到真实文件(同时替换行尾)。

于 2009-02-20T15:38:57.273 回答
0

上帝保佑你不能......你会完全改变System.Environment命名空间的整个含义。

您想要做的是为特定操作系统编写一些东西(无论您在哪个环境上运行应用程序),所以 Environment. 不是你应该开始使用的。

于 2009-02-20T15:57:50.533 回答
-2

我们遇到了这个问题,我们必须将 NewLine 的值更改<br />为 web 输出。

它需要在我们的班级中使用另一个属性。真的没有办法解决。

于 2009-11-30T18:17:47.130 回答