我正在使用一个库,它在编写文件时使用Environment.NewLine作为换行符。我需要它来编写Unix格式的文件,因此想要更改换行符。
我可以更改Environment.NewLine的值吗?
任何其他想法(除了转换创建文件后)?
答案 0 :(得分:10)
我可以更改Environment.NewLine的值吗?
没有。如果您知道要编写哪个平台,请为每个平台创建类,并让它们拥有自己的实现。在最简单的情况下,这将看起来如下:
public abstract class Platform { public abstract string Newline { get; } }
public sealed class Unix : Platform {
public override string Newline { get { return "\n"; } }
}
等,然后只使用相应类的实例。
答案 1 :(得分:2)
根据MSDN,Environment类是密封的,因此您将无法从中继承更改值。据我所知,这是你能够做到的唯一方法。或者,您可以尝试创建一个扩展Environment类的部分类。我从来没有尝试过后者,所以不确定它是否会起作用。
答案 2 :(得分:1)
Environment.Newline返回托管.Net运行时的运行时环境的换行符。您不应该使用它来将换行符转换为另一个平台的换行符。
我建议您实现自己的转化课程。
答案 3 :(得分:0)
Environment.NewLine属性常量,因此没有更改它。我可以推荐的最好的事情是改变使用它的地方,到你自己的常数。
答案 4 :(得分:0)
第三方库是写入Stream还是传递文件名?
在前一种情况下,您可以传递一个MemoryStream,然后在换行符上进行替换以获得所需的内容。在后者中,将其写入临时文件,然后流式传输到真实文件(同时替换行结尾)。
答案 5 :(得分:0)
上帝保佑你不能......你完全改变了System.Environment
命名空间的全部含义。
您要做的是为特定操作系统编写内容(无论您在哪个环境中运行应用程序),所以环境。不是你应该开始使用的东西。
答案 6 :(得分:-2)
我们遇到了这个问题,我们不得不将NewLine的值更改为<br />
以进行网络输出。
它需要在我们班级中使用另一个属性。真的没办法解决它。