2012-11-12 30 views
14

Tôi gặp sự cố với Trình tạo luồng C#. tôi sử dụng đoạn mã sau:Với StreamWriter không hoạt động n (C#)

//Constructor 
public EditorTXTFile 
{ 
    FileStream f = File.Create(System.IO.Directory.GetCurrentDirectory() + "\\Output.txt"); 
    f.Close(); 
} 

//Function AddText 
public void AddLogFileText(string text) 
{   
    string text = "l1\n\rl2\n\rl3\n\nl5"; 

    StreamWriter writer = new StreamWriter(System.IO.Directory.GetCurrentDirectory() + "\\Output.txt", true); 
    writer.Write(text);   

    writer.Close(); 
} 

Khi tôi mở output.txt nó cho thấy cho \ n hoặc \ output █ (mà không có nghĩa là biểu tượng showable) và toàn bộ chuỗi là trong một dòng ... Sau đó nên các văn bản bàn giao chức năng, vì vậy tôi không thể viết văn bản với .WriteLine vì tôi không biết nếu chuỗi thực tế là trên cùng một dòng hoặc trong một dòng mới.

Điều gì khiến tôi sai?

Cảm ơn bạn đã được trợ giúp.

+3

Hãy thử '\ r \ n' hơn là' \ n \ r' –

+6

Hoặc thậm chí tốt hơn, 'writer.WriteLine' mà làm điều đó cho bạn –

+0

Câu trả lời ở đây có một số thông tin hữu ích cũng như: http://stackoverflow.com/questions/1885900/order-of-carriage-return-and-new-line-feed –

Trả lời

29

Sử dụng Environment.NewLine làm dấu tách dòng hoặc "\r\n" nếu bạn muốn thực hiện việc đó bằng tay.

+2

Vẻ đẹp của 'Environment.NewLine' là bạn không phải lo lắng về kết hợp chính xác của' \ r \ n' cho môi trường cụ thể mà mã của bạn đang chạy. –

+0

Ok cảm ơn sau đó tôi sẽ thay thế một \ n thông qua một \ r \ n. – Waronius

-2

Hãy thử string text = @"l1\n\rl2\n\rl3\n\nl5";. Để ngăn chặn nhồi nhét nhân vật.

1

Dòng Separator (newline) là \r\n không \n\r,

thay đổi văn bản của bạn như:

 string text = "l1\r\nl2\r\nl3\r\nl5"; 
0

Đây là định dạng nhị phân:

writer.Write(text); 

Đây là dòng định dạng tuần tự:

writer.WriteLine(text); 

Bạn phải sử dụng định dạng WriteLine ...

0

Bạn có thể sử dụng Environment.NewLine như thế này:

streamWriter.Write(String.Concat(Enumerable.Repeat(Environment.NewLine, n).ToArray())); 
0

tôi đã cố gắng để viết một lớp và seprate "\ n" s nhưng tôi tìm thấy hộp văn bản giàu có! !

yeah! nó hoạt động:

 RichTextBox rch = new RichTextBox(); 
     rch.Text = cmn; 
     foreach (string l in rch.Lines) 
      strw.WriteLine(l); 
+0

bạn có thể sử dụng rch.NewLine = "\ n \ r"; để thay đổi môi trường dòng mới –

Các vấn đề liên quan