2009-02-20 17 views
6

私はEnvironment.NewLineをファイルを書き込むときに改行文字として使用するライブラリを扱っています。私はUnix形式のファイルを書く必要があり、改行文字を変更したいと思っています。Environment.NewLineの値を変更することはできますか?

Environment.NewLineの値を変更することはできますか?

その他のアイデア(ファイルのポスト作成の変換を除いて)?

+0

なぜ改行文字が必要な場合は、手動で改行文字をコード化できないのですか? – ryeguy

+0

私のライブラリではありません – TheSoftwareJedi

答えて

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

2

MSDNによると、Environmentクラスは封印されているため、値を変更するために継承することはできません。私の知る限り、それはあなたができる唯一の方法です。あるいは、Environmentクラスを拡張する部分クラスを作成して作成することもできます。後者を試したことがないので、それがうまくいくかどうかは分かりません。

+0

NewLineプロパティは静的です...必要なだけ拡張できます。 – Kugel

0

Environment.NewLineプロパティは変更されていないので定数です。私がお勧めできる最も良いことは、これが使われているどこでも自分の定数に変更することです。

0

サードパーティのライブラリはストリームに書き込むのですか、それともファイル名を渡しますか?

前者の場合は、MemoryStreamを渡して改行を置き換えて、必要なものを取得することができます。後者では、テンポラリファイルに書き込んだ後、実ファイルにストリームします(行末を置き換えながら)。

1

Environment.Newlineは、.Netランタイムをホストする実行時環境の改行文字を返しています。改行を別のプラットフォームの改行文字に変換するためには使用しないでください。

コンバージョンに独自のクラスを実装することをおすすめします。

0

神様は祝福できません... System.Environment名前空間の全体の意味を完全に変更することはできません。

あなたがしたいことは、特定のOS(アプリケーションを実行している環境に関係なく)に何かを書き込むことです。そのため、環境。あなたが最初に使うべきものではありません。

-2

ウェブ出力のためにNewLineの値を<br />に変更しなければならなかったこの問題がありました。

私たちのクラスで使用するには別のプロパティを作る必要がありました。その周りに本当に方法はありません。

関連する問題