我正在使用一個使用Environment.NewLine的庫,因爲它在編寫文件時是換行符。我需要它來編寫Unix格式的文件,並且因此想要更改換行符char。我可以更改Environment.NewLine的價值嗎?
我可以更改Environment.NewLine的值嗎?
任何其他想法(除了轉換文件後創建)?
我正在使用一個使用Environment.NewLine的庫,因爲它在編寫文件時是換行符。我需要它來編寫Unix格式的文件,並且因此想要更改換行符char。我可以更改Environment.NewLine的價值嗎?
我可以更改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"; } }
}
等,然後只是使用適當的類的實例。
這就是我的想法。我會做一個轉換後文件創建,因爲它不是我的庫改變。謝謝! – TheSoftwareJedi 2009-02-20 15:52:52
根據MSDN,Environment類是密封的,所以你不能從它繼承來改變它的值。據我所知,這是你能夠做到的唯一方法。或者,您可以嘗試創建一個擴展Environment類的分部類。我從來沒有嘗試後者,所以不知道它是否會工作。
Environment.NewLine屬性常量,所以沒有改變它。我可以推薦的最好的事情就是改變使用這個地方的任何地方,讓自己保持不變。
第三方庫是否寫入流或者是否將它傳遞給文件名?
在前一種情況下,您可以傳遞一個MemoryStream,然後在換行符上進行替換以獲得所需的內容。在後者得到它寫入一個臨時文件,然後流到實際文件(同時替換行尾)。
Environment.Newline正在返回承載.Net運行時的運行時環境的換行符。你不應該用這個來換行換行到另一個平臺的換行符。
我會推薦實施您自己的轉換類。
上帝保佑你不能......你完全改變了System.Environment
命名空間的全部含義。
你想要做的是爲特定的操作系統編寫一些東西(不管你在哪個環境中運行應用程序),所以環境。這不是你應該用來開始的東西。
我們有這個問題,我們必須將NewLine的值更改爲<br />
以用於Web輸出。
它需要製作另一個用於我們班的財產。真的沒有辦法繞過它。
爲什麼你不能只是手動編碼換行符,如果這是你想要的? – ryeguy 2009-02-20 15:30:32
這不是我的圖書館 – TheSoftwareJedi 2009-02-20 15:47:05