背景:這個是我在寫一箇中間件的時候發現需要用到文件存儲數據方面的東西,因爲自己寫的達不到那個量級的需求,然後去stackoverflow上就看到了推薦 BerkeleyDB 這個文件數據庫
下面是我的測試代碼:
public static void main(String[] args) throws Exception {
EnvironmentConfig environmentConfig = new EnvironmentConfig();
environmentConfig.setAllowCreate(true);
environmentConfig.setReadOnly(false);
environmentConfig.setTransactional(true);
Environment environment = new Environment(new File("D:\\AA.txt"),environmentConfig);
System.out.println("Env Config: " + environment.getConfig());
}
啓動之後報錯信息爲
com.sleepycat.je.DatabaseException: The Environment directory is not writable, but the Environment was opened for read-write access.
這個可能國內使用的人不多吧,在國內的搜索引擎都沒找到原因,想了想還是去官網文檔中心找吧,地址(https://apps.state.or.us/tech/berkeleyDB/java/com/sleepycat/db/Environment.html#Environment(java.io.File,%20com.sleepycat.db.EnvironmentConfig)
結果看到抒寫格式必須爲目錄,而我寫的是文件,:
把 Environment 處改成目錄就行了,如下代碼:
public static void main(String[] args) throws Exception {
EnvironmentConfig environmentConfig = new EnvironmentConfig();
environmentConfig.setAllowCreate(true);
environmentConfig.setReadOnly(false);
environmentConfig.setTransactional(true);
Environment environment = new Environment(new File("D:\\B_02_BerkeleyDB"),environmentConfig);
System.out.println("Env Config: " + environment.getConfig());
}