2012-06-11 7 views
11

私はC#を使用していて、ASCIIファイルにいくつかの行を出力しようとしています。私はちょうどであることを、このファイルが必要CRLFを使わずにC#で行を書く方法

ASCII text, with CRLF line terminators 

ASCII text 

CRLFはいくつかの問題を引き起こしていると私はそこに期待していたとして、私がいる問題は、私のLinuxホストは、これらのファイルを見ているということですC#で私が望むようにフォーマットされたファイルを作成する方法でした。

私は基本的にこのコードを使用しています:

string[] lines = { "Line1", "Line2" }; 
File.WriteAllLines(myOutputFile, lines, System.Text.Encoding.UTF8); 

はCRLFラインターミネータなしでファイルを作成する簡単な方法はありますか?私はおそらくLinux側でそれを世話することができますが、最初から適切な形式でファイルを作成しています。

File.WriteAllText(myOutputFile, string.Join("\n", lines)); 

またはあなたは間違いなく、あまりにも最後の行の後に改行をしたい場合:あなたはまだ実際にあなただけの行は、キャリッジリターン/ラインフィードの代わりにフィードを、あなたが使用することができたい、改行をしたいと仮定すると、

+0

:あなたは多くの知識/ Eを持っていますかASCIIを使ったxperience、あるいはC#が文字列/文字の値を内部的に格納する方法は? – lyrisey

+0

@mikurski、私はC#が内部的に値をどのように格納するかについて多くの知識を持っていません。 – jared

+0

StringクラスのMSDN .NETのドキュメントは、特にReplace()メソッドに役立ちます。参照してくださいhttp://msdn.microsoft.com/en-us/library/system.string.aspx – lyrisey

答えて

29

好奇心のうち

File.WriteAllText(myOutputFile, string.Join("\n", lines) + "\n"); 

(あるいは、あなたが言うように、あなたがLinux側でそれを修正することができ、dos2unixで例えば)

+0

上記のFile.WriteAllText(myOutputFile、string.Join( "\ n"、行)+ " \ n ");なぜなら、stringは要素間にセパレータを配置しますが、デリミタは各要素の最後の後になければなりません。そうしないと最後の行が失われます。 –

+0

@KenBoorom: "区切り記号はすべての要素の最後の後になければなりません。そうしないと最後の行が失われます。" - あなたは最後の行を失うことはありません、それはちょうど最後に改行を持っていません。私はオプションとしてそれを追加します。 –

関連する問題