我正在使用一个库,它在写文件时使用Environment.NewLine作为换行符。我需要将其更改为Unix格式的换行符。
我能否更改Environment.NewLine的值?
除了创建后转换文件之外,还有其他想法吗?
我能改变 Environment.NewLine 的值吗?
不能。如果你知道要编写哪个平台的代码,可以为每个平台创建一个类并让它们拥有自己的实现。在最简单的情况下,这将看起来像以下内容:
public abstract class Platform { public abstract string Newline { get; } }
public sealed class Unix : Platform {
public override string Newline { get { return "\n"; } }
}
等等,然后只需使用适当类的实例即可。
Environment.Newline 返回托管 .Net 运行时的运行时环境的换行符。您不应该使用它来将换行符转换为另一个平台的换行符。
我建议您实现自己的类进行转换。
Environment.NewLine属性是一个常量,因此无法更改。我建议的最好方法是将使用该属性的所有地方都更改为您自己的常量。
第三方库是将数据写入流还是传递文件名?
如果是前者,你可以传递一个内存流,然后使用替换操作获取所需的换行符。如果是后者,让它先写入临时文件,然后再将流传递到真实文件(同时替换行尾)。
天啊,如果你这样做的话,你会完全改变System.Environment
命名空间的整个含义。
你想要做的是为特定的操作系统编写代码(无论你在哪个环境下运行应用程序),所以起步时不应该使用Environment。
我们遇到了这样的问题,需要将NewLine的值更改为<br />
以用于Web输出。
这就需要在我们的类中创建另一个属性来使用。实际上没有其他解决方法。