2013-05-02 3 views
0

дал это существующий CSV-файл со следующим примером структурой/содержанием:Создание DAO для существующих CSV файла

id,password,role 
user1,1234,student 
user2,1234,professor 

Я хочу, чтобы создать базовый DAO с помощью простых операций CRUD в Java, чтобы получить доступ и изменять эти данные. Возможно ли обновить/отредактировать одну запись/строку? Или мне нужно полностью разобрать и переписать файл?

Текущая реализация:

package com.testproject.persistence; 

import java.io.FileWriter; 
import java.io.IOException; 
import java.util.List; 

import com.testproject.model.User; 

public class UserDAO { 
    private final static String CSV_FILE = "/Users/someuser/Desktop/test.csv"; 

    /** 
    * 
    * @param user 
    */ 
    public void add(User user) { 
     try { 
      FileWriter writer = new FileWriter(CSV_FILE, true); 

      writer.append(user.getId()); 
      writer.append(';'); 
      writer.append(user.getPassword()); 
      writer.append('\n'); 

      writer.flush(); 
      writer.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    /** 
    * 
    * @param user 
    */ 
    public void update(User user) { 
     // 
    } 

    /** 
    * 
    * @param userId 
    */ 
    public void delete(String userId) { 
     // 
    } 

    /** 
    * 
    * @return 
    */ 
    public List<User> findAll() { 
     return null; 
    } 

    /** 
    * 
    * @param userId 
    * @return 
    */ 
    public User findByPrimaryKey(String userId) { 
     return null; 
    } 
} 

Спасибо и наилучшими пожеланиями

Philipp

+0

я думаю, у получить некоторую помощь форме этот вопрос [этот вопрос, задаваемый здесь] (http://stackoverflow.com/ вопросы/822150/изменить A-TXT-файл-в-Java) – Joshi

ответ

1

Подход: Читать оригинальный файл CSV -> Изменение содержимого памяти и записи в новую Файл-> Удалить старый файл -> Переименовать новый файл)

Два подхода для достижения этого:

ПЕРВЫЙ: Если ваш CSV не слишком большой 1. Создайте объект, представляющий каждую строку CSV 2. Представлять CSV в качестве коллекции объектов после прочтения CSV

СОЗДАТЬ: Добавить объект в вашей коллекции и переписывает файл

READ: Простое чтения из коллекции в вашей коллекции является копией вашего CSV

UPDATE: обновить объект в вашей коллекции и переписывание CSV

УДАЛЕНИЯ: Удалить объект из собирать и переписывать csv

** Преимущество этого подхода - ЧИТАТЬ, не считая прочитанного файла.

SECOND: Если ваш csv слишком велик, и у вас есть ограничения памяти, то избегайте создания коллекции, но все же вам придется переписать файл так же, как вы его обновляете.

** Преимущество этого подхода заключается в том, что вы сохранили память, но ваш ЧИТАЕТ также медленно

Смежные вопросы