2012-10-28 32 views
5

Lúc đầu, chương trình của tôi, ghi vào một tập tin csv trong dòng đầu tiên, Nhưng, khi tôi đang chạy chương trình của tôi ở lần thứ hai .. thứ ba .. thời gian, nó chạy trên dòng đầu tiên .. làm thế nào có thể tôi sửa nó?Làm cách nào để viết dòng tiếp theo trong lần mở tệp csv tiếp theo?

Tôi muốn có tệp nhập CSV của tất cả các chương trình nhập vào chương trình của mình.

Mã này là như sau:

private void WriteToCsvFile() 
{ 
    var us = users.ElementAt(0); 
    string names = "Number',"; 
    string userAnswer = (us.userName + ","); 
    foreach (string ss in user) 
    { 
     string str = Path.GetFileName(ss); 
     names = names + str + ","; 
    } 
    foreach (string ans in us.answer) 
    { 
     userAnswer = userAnswer + ans + ","; 
    } 

    using (StreamWriter sw = new StreamWriter("EntranceLog.csv")) 
    { 
     sw.WriteLine(names); 
     sw.WriteLine(userAnswer); 

    } 

    this.Close(); 
} 

Trả lời

3

Thêm true tham số trong constructor:

using (StreamWriter sw = new StreamWriter("EntranceLog.csv", true)) 

Tham số thứ hai tên là append điều khiển cho dù một tập tin hiện có sẽ được ghi đè hoặc nối. MSDN tiểu bang:

true để nối thêm dữ liệu vào tệp; false để ghi đè lên tệp. Nếu tệp được chỉ định không tồn tại, tham số này không có hiệu lực và hàm tạo tạo một tệp mới.

+0

Cảm ơn tất cả các bạn để được giúp đỡ của bạn! –

0

Mỗi lần chạy, bạn đang tạo tệp mới có cùng tên sẽ ghi đè tệp cũ hơn. Đó là hành vi mặc định của hàm tạo cụ thể mà bạn đang sử dụng.

Bạn muốn sử dụng this constructor thay vào đó và xác định các thông số append như true:

using (StreamWriter sw = new StreamWriter("EntranceLog.csv", true)) 
{ 
    // write your file as normal 
} 
Các vấn đề liên quan