gpt4 book ai didi

java - 相当于Java中python的shelve模块

转载 作者:搜寻专家 更新时间:2023-11-01 03:25:40 24 4
gpt4 key购买 nike

Java中有没有相当于python的shelve模块的模块?我需要这个来实现像分类数据访问这样的字典。类似字典的分类数据访问是一种以持久易于访问的数据库格式保存 Python 对象的强大方法。我需要一些用于相同目的但使用 Java 的东西。

最佳答案

我也需要这个,所以我写了一个。有点晚了,但也许会有帮助。

它没有实现 close() 方法,而只是使用 sync(),因为它只在实际写入文件时保持文件打开。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;

public class Shelf extends HashMap<String, Object> {
private static final long serialVersionUID = 7127639025670585367L;
private final File file;

public static Shelf open(File file) {
Shelf shelf = null;
try {
if (file.exists()) {
final FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
shelf = (Shelf) ois.readObject();
ois.close();
fis.close();
} else {
shelf = new Shelf(file);
shelf.sync();
}
} catch (Exception e) {
// TODO: handle errors
}
return shelf;
}

// Shelf objects can only be created or opened by the Shelf.open method
private Shelf(File file) {
this.file = file;
sync();
}

public void sync() {
try {
final FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(this);
oos.close();
fos.close();
} catch (Exception e) {
// TODO: handle errors
}
}

// Simple Test Case
public static void main(String[] args) {
Shelf shelf = Shelf.open(new File("test.obj"));
if (shelf.containsKey("test")) {
System.out.println(shelf.get("test"));
} else {
System.out.println("Creating test string. Run the program again.");
shelf.put("test", "Hello Shelf!");
shelf.sync();
}
}
}

关于java - 相当于Java中python的shelve模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14469884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com