2012-06-11 17 views
11

Używam C# i próbuję wyprowadzić kilka linii do pliku ASCII. Problem mam jest to, że mój gospodarz Linux widzi te pliki jak:Jak pisaćAllLines w C# bez CRLF

ASCII text, with CRLF line terminators 

muszę ten plik, aby być po prostu:

ASCII text 

CRLF powoduje pewne problemy i miałem nadzieję tam był sposób w C#, aby po prostu utworzyć plik sformatowany w sposób, jaki chcę.

Ja w zasadzie za pomocą tego kodu:

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

Czy istnieje prosty sposób, aby utworzyć plik bez terminatorów linii CRLF? Prawdopodobnie poradzę sobie z tym po stronie Linuksa, ale wolę po prostu utworzyć plik we właściwym formacie od samego początku.

+0

z ciekawości: Czy masz dużo wiedzy/e xperience z ASCII lub jak C# przechowuje wartości łańcuchowe/znakowe wewnętrznie? – lyrisey

+0

@mikurski, Nie mam wiele wiedzy na temat tego, jak C# przechowuje wartości wewnętrznie. – jared

+0

Dokumentacja MSDN .NET dla klasy String może być przydatna, szczególnie dla metody Replace(). Zobacz http://msdn.microsoft.com/en-us/library/system.string.aspx – lyrisey

Odpowiedz

29

Zakładając, że nadal faktycznie chcą linebreaks, chcesz po prostu linia zasila zamiast powrotu karetki/wysuwu wiersza, można użyć:

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

czy na pewno chcesz podział wiersza po ostatniej linii TOO:

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

(Alternatywnie, jak mówisz, można go naprawić po stronie Linux, np dos2unix.)

+0

Wierzę, że powyższe może być lepsze jako File.WriteAllText (myOutputFile, string.Join ("\ n", linie) + " \ n "); ponieważ string, Dołączuje separatory między elementami, ale separator musi wystąpić po zakończeniu każdego elementu, w przeciwnym razie stracisz ostatnią linię. –

+0

@KenBoorom: "ale ogranicznik musi wystąpić po zakończeniu każdego elementu, w przeciwnym razie stracisz ostatnią linię." - nie stracisz ostatniej linii, po prostu nie będzie końca linii. Dodam, że jako opcja. –

Powiązane problemy