Chỉnh sửa csv file trong C#

Mình có 1 csv file như bên dưới. Bây giờ mình muốn

  1. Đổi giá trị ở cột thứ 3 thành “Chicken” nếu giá trị trước của nó là “Egg”
  2. Xóa luôn cột price

Lúc đầu thì mình store tất cả data trong 1 cái array rồi viết lại toàn bộ file, gặp egg chỗ nào thì thay bằng chicken rồi không viết cột price. Cách này brute force quá. Mình muốn chỉnh sửa file gốc thay vì viết lại toàn bộ như cách hiện tại thì mình nên làm như thế nào?

image

Tập tin csv là định dạng thuần văn bản.
Cách bạn làm đúng rồi, phải duyệt hết thì mới biết chỗ nào cần đổi chứ.

5 Likes

Đó là cách tốt nhất rồi.

3 Likes

Mình nghĩ bạn hiểu nhầm ý của mình.
Mình vẫn sẽ duyệt hết cả file nhưng chỉ modify những chỗ cần thôi.
Mình muốn như kiểu trong Excel ấy, cần sửa chỗ nào thì ấn vào ô đó mà sửa. Còn muốn xoá 1 cột thì chọn delete column thôi.
Cách làm hiện tại là xoá đi hết viết lại từ đầu.
Mình chưa thao tác trên file csv bao h nên muốn hỏi xem có cách nào làm giống như kiểu Excel mình vừa nói ở trên không.

File nào cũng phải xoá đi viết từ đầu hết.

6 Likes

Cám ơn hai bạn nhiều.

Thực chất, khi bạn xóa hay sửa một cột thì bạn đang chỉnh sửa dữ liệu trên RAM chứ không phải ổ cứng, khi nào lưu file lại thì nó mới lưu trên ổ cứng, thế nên, đúng như @Duong_Act đã nói, khi lưu file lúc nào cũng phải xóa đi viết lại từ đầu.

5 Likes

Đọc tới dòng nào ghi ra file tạm dòng đó thôi :slight_smile: sau đó đổi tên file tạm thành file gốc, nếu ko ngày đẹp trời nó lại chập phát là hỏng file.

4 Likes

Thử cái này xem:


Nó giống như mmap trong linux ấy.
Là ánh xạ 1 phần của file lên RAM rồi edit chỗ đó.
Ví dụ bạn lo ngại tốn RAM khi file kích thước lớn lên tới GB. Cơ mà chắc bạn không lo tới mức đó đâu. Cứ “brute force” nhé :face_with_hand_over_mouth:

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?