给出的是一个现有的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;
}
}
谢谢和亲切的问候
菲利普
答案 0 :(得分:1)
方法:阅读原始csv - &gt;更改内存中的内容并写入新文件 - &gt;删除旧文件 - &gt;重命名新文件)
实现这一目标的两种方法:
第一:如果你的csv不是太大 1.创建一个表示csv每行的对象 2.在阅读csv
后将csv表示为对象集合创建:在集合中添加一个对象并重写该文件
阅读:简单读取集合,因为您的集合是csv的副本
更新:更新集合中的对象并重新编写csv
DELETE:从集合中删除对象并重写csv
**这种方法的好处是READS没有文件读取。
SECOND:如果你的csv太大并且你有内存限制,那么就避免创建集合,但是你仍然需要在对文件进行任何更新时重新编写文件。
**这种方法的好处是可以节省内存,但是你的READS也很慢