2009-02-20 129 views
6

我正在使用一個使用Environment.NewLine的庫,因爲它在編寫文件時是換行符。我需要它來編寫Unix格式的文件,並且因此想要更改換行符char。我可以更改Environment.NewLine的價值嗎?

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

任何其他想法(除了轉換文件後創建)?

+0

爲什麼你不能只是手動編碼換行符,如果這是你想要的? – ryeguy 2009-02-20 15:30:32

+0

這不是我的圖書館 – TheSoftwareJedi 2009-02-20 15:47:05

回答

10

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

不可以。如果您知道要編寫哪個平臺,請爲每個平臺創建類並讓它們自己實現。在最簡單的情況下,這看起來如下:

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

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

等,然後只是使用適當的類的實例。

+0

這就是我的想法。我會做一個轉換後文件創建,因爲它不是我的庫改變。謝謝! – TheSoftwareJedi 2009-02-20 15:52:52

2

根據MSDN,Environment類是密封的,所以你不能從它繼承來改變它的值。據我所知,這是你能夠做到的唯一方法。或者,您可以嘗試創建一個擴展Environment類的分部類。我從來沒有嘗試後者,所以不知道它是否會工作。

0

Environment.NewLine屬性常量,所以沒有改變它。我可以推薦的最好的事情就是改變使用這個地方的任何地方,讓自己保持不變。

0

第三方庫是否寫入流或者是否將它傳遞給文件名?

在前一種情況下,您可以傳遞一個MemoryStream,然後在換行符上進行替換以獲得所需的內容。在後者得到它寫入一個臨時文件,然後流到實際文件(同時替換行尾)。

1

Environment.Newline正在返回承載.Net運行時的運行時環境的換行符。你不應該用這個來換行換行到另一個平臺的換行符。

我會推薦實施您自己的轉換類。

0

上帝保佑你不能......你完全改變了System.Environment命名空間的全部含義。

你想要做的是爲特定的操作系統編寫一些東西(不管你在哪個環境中運行應用程序),所以環境。這不是你應該用來開始的東西。

-2

我們有這個問題,我們必須將NewLine的值更改爲<br />以用於Web輸出。

它需要製作另一個用於我們班的財產。真的沒有辦法繞過它。

相關問題