写一个用Ehcache读取2G的CSV文件并缓存到临时文件中,最后以List<dto>的形式传出的demo
时间: 2024-05-16 15:17:39 浏览: 15
以下是一个基于Ehcache的demo,用于读取2G的CSV文件并缓存到临时文件中,最后以List<dto>的形式传出。
```java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
public class CsvCacheDemo {
private static final String CACHE_NAME = "csvCache";
private static final String CSV_FILE_PATH = "/path/to/csv/file.csv";
public static void main(String[] args) throws IOException {
// 初始化缓存管理器
CacheManager cacheManager = new CacheManager();
// 创建缓存
Cache cache = new Cache(CACHE_NAME, 5000, false, false, 3600, 1800);
cacheManager.addCache(cache);
// 从缓存中获取数据
Element element = cache.get(CSV_FILE_PATH);
List<Dto> dtoList;
if (element != null) {
dtoList = (List<Dto>) element.getObjectValue();
} else {
// 从CSV文件中读取数据
dtoList = readCsvFile(CSV_FILE_PATH);
// 将数据缓存到临时文件中
cache.put(new Element(CSV_FILE_PATH, dtoList));
}
// 输出结果
for (Dto dto : dtoList) {
System.out.println(dto);
}
// 关闭缓存管理器
cacheManager.shutdown();
}
private static List<Dto> readCsvFile(String filePath) throws IOException {
List<Dto> dtoList = new ArrayList<>();
File file = new File(filePath);
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
String[] values = line.split(",");
Dto dto = new Dto();
dto.setId(values[0]);
dto.setName(values[1]);
dto.setAge(Integer.parseInt(values[2]));
dtoList.add(dto);
}
br.close();
return dtoList;
}
private static class Dto {
private String id;
private String name;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Dto [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
}
```
在上面的示例中,我们首先初始化了一个缓存管理器,并创建了一个名为`csvCache`的缓存。然后,我们尝试从缓存中获取数据,如果缓存中不存在,则从CSV文件中读取数据,并将数据缓存到临时文件中。最后,我们遍历`dtoList`并输出结果。注意,在关闭缓存管理器之前,需要先关闭缓存。