2010-06-24 39 views
8

Tôi có một tập tin csv không đầy đủ mà cần phải được cập nhật một cách chính xác là những gì, do đó, tập tin csv như thế này:cách tốt nhất để sửa csv tập tin

one,two,three,four,five,six,seven,eight,nine,ten //This is a line(String) 

Đương nhiên các tập tin được thêm rất nhiều phức tạp nhưng trong này định dạng, đây là những gì tôi muốn làm chèn new-word,new-word1, new-word3 hoặc n từ giữa bảy và tám (hoặc bất kỳ phạm vi). Làm thế nào tôi có thể làm điều đó?

Mã giả, mã hoặc ví dụ sẽ tuyệt vời, tôi không có đầu mối về cách bắt đầu.

UPDATE:

Có lẽ tôi nên chuyển đổi này để mảng hoặc một số loại datastructure. Sau đó chèn mục mới ở vị trí nhất định, thay đổi phần còn lại của nội dung và thực hiện điều đó cho mỗi lần chèn.

Tôi không biết nếu là cách đúng đắn để đi hoặc làm thế nào để bắt đầu lập trình nó

CẬP NHẬT II:

Có lẽ đọc trong csv trong danh sách, phân chia danh sách thành hai danh sách, một trong những đầu tiên kết thúc với bảy. Sau đó, thêm n từ vào danh sách đầu tiên và tham gia hai danh sách ở cuối? cũng không biết cách lập trình này

Trả lời

5

Hãy xem OpenCSV.

UPDATE: Dưới đây là một số (chỉ) giả để đưa ra một ý tưởng chung về cách bạn sẽ sử dụng OpenCSV cho việc này:

CSVReader reader = new CSVReader(new FileReader("old.csv")); 
CSVWriter writer = new CSVWriter(new FileWriter("new.csv")); 
String [] nextLine; 
while ((nextLine = reader.readNext()) != null) { 
    List<String> lineAsList = new ArrayList<String>(Arrays.asList(nextLine)); 
    // Add stuff using linesAsList.add(index, newValue) as many times as you need. 
    writer.writeNext(lineAsList.toArray()); 
} 

Hat-tip: @ Mark Peters người chỉ ra rằng bạn không thể cập nhật kết quả của Arrays.asList

+0

@Hank Gay tôi hoặc là không hiểu những gì bạn đã đăng hoặc này viết các mục nhập hiện có của bạn vào một tệp mới, tôi không thấy ở bất kỳ đâu ở đây làm thế nào tôi có thể viết giữa các mục –

+0

Liệu OpenCSV có thoát khỏi dấu nháy kép đúng không? –

+0

@ Joe Phillips Tôi đoán điều đó phụ thuộc vào định nghĩa của bạn đúng, vì không có thông số kỹ thuật. Đó là một thư viện đơn giản; Tôi khuyên bạn nên thử nghiệm nó và đọc [FAQ trên trang chủ của nó] (http://opencsv.sourceforge.net/). –

0

Tôi sẽ phân tích cú pháp đó thành một bộ sưu tập, thêm các mục của bạn, sau đó hiển thị lại thành csv.

+0

có, bạn sẽ chèn n mục vào bất kỳ bộ sưu tập nào: danh sách mảng giữa hai mục đã nằm trong số –

+1

Bạn sẽ tìm thấy đối tượng trước khi bạn muốn chèn, lấy chỉ mục, sau đó chèn ba mục vào đó? –

+0

Đối với ArrayList, sử dụng phương thức 'add (int, object)'. –

1

mã giả như này có thể giúp:

List values = Arrays.asList(line.split(",\s*")); 
List newWords = Arrays.aList(newWordsLine.split(",\s*")); 

values.addAll(7,newWords); 

StringBuffer buf = new StringBuffer(values.get(0)); 
for(v : values.subList(1,values.size()) { 
    buf.append(",",v); 
} 
return buf.toString(); 

này sẽ chèn newWords sau mục 7 trên dòng

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