为现有CSV文件创建DAO

时间:2013-05-02 11:08:58

标签: java csv dao

给出的是一个现有的CSV文件,其中包含以下示例结构/内容:

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

我想在Java中使用简单的CRUD操作创建一个基本的DAO来访问和修改该数据。是否可以更新/编辑单个记录/行?或者我是否必须完全解析并重写文件?

目前的实施:

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;
    }
}

谢谢和亲切的问候

菲利普

1 个答案:

答案 0 :(得分:1)

方法:阅读原始csv - &gt;更改内存中的内容并写入新文件 - &gt;删除旧文件 - &gt;重命名新文件)

实现这一目标的两种方法:

第一:如果你的csv不是太大 1.创建一个表示csv每行的对象 2.在阅读csv

后将csv表示为对象集合

创建:在集合中添加一个对象并重写该文件

阅读:简单读取集合,因为您的集合是csv的副本

更新:更新集合中的对象并重新编写csv

DELETE:从集合中删除对象并重写csv

**这种方法的好处是READS没有文件读取。

SECOND:如果你的csv太大并且你有内存限制,那么就避免创建集合,但是你仍然需要在对文件进行任何更新时重新编写文件。

**这种方法的好处是可以节省内存,但是你的READS也很慢