【发布时间】:2018-08-31 15:27:27
【问题描述】:
我正在使用下面的代码在内存中创建 mdb 文件的副本,但它在 DatabaseBuilder 构造函数上给出了空指针异常,即不存在文件,我想要的是创建此操作的副本并将副本返回到 outputstream。
文件 tmp = new File("test.mdb");
FileChannel 频道 = MemFileChannel.newChannel(tmp,DatabaseImpl.RW_CHANNEL_MODE);
FileUtils.copyFile(file , tmp);
数据库 db = new DatabaseBuilder(tmp).setChannel(channel).open();
【问题讨论】:
-
如果你这样指定test.mdb,你必须正确放置文件。例如。如果从命令行运行它,该文件必须在当前工作目录中。如果您尝试从 eclipse 或 maven 运行它,它搜索的目录就是 java 项目目录。
-
@m4gic 我想在内存中创建 test.mdb 目标文件是资源文件夹中正确加载的物理文件
-
DatabaseBuilder也有一个没有参数的构造函数。你试过new DatabaseBuilder().setChannel ......吗? -
@GordThompson 然后它说空数据库文件,如果我删除 cahnnel 创建代码并编写新的 DatabaseBuilder(tmp).open() 则一切正常,这就是我现在使用的
-
当您说“资源文件夹中存在的物理文件”时,您是否打算将数据库作为可执行 jar 文件的一部分分发,并希望在运行时打开数据库的内存副本你的应用?