0

给出的是具有以下示例结构/内容的现有 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;
    }
}

谢谢和亲切的问候

菲利普

4

1 回答 1

0

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

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

第一:如果你的 csv 不是太大 1. 创建一个代表 csv 每一行的对象 2. 读取 csv 后将 csv 表示为对象的集合

CREATE:在你的集合中添加一个对象并重写文件

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

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

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

**这种方法的好处是 READS 无需读取文件。

第二:如果您的 csv 太大并且您有内存限制,那么避免创建集合,但您仍然必须在对文件进行任何更新时重新写入文件。

** 这种方法的好处是可以节省内存,但读取速度也很慢

于 2013-05-02T13:12:34.620 回答