gpt4 book ai didi

java - android 将数据库从 Assets 复制到 sdcard - 打开失败 : EISDIR (Is a directory)

转载 作者:行者123 更新时间:2023-11-29 07:47:08 25 4
gpt4 key购买 nike

这是我将数据库从 Assets 文件夹复制到 SD 卡的代码:

File databaseFile = new File(context.getExternalFilesDir(null),"");
if(!databaseFile.exists()){
databaseFile.mkdirs();
}

String outFileName = context.getExternalFilesDir(null) + "/db.db";
try {
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
InputStream myInput = context.getAssets().open("db");
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myInput.close();

myOutput.flush();
myOutput.close();
} catch (Exception e) {
Log.v("this",e.getMessage().toString());
}

当我运行它时,它给我这个错误:

/storage/emulated/0/Android/data/myPackageName/files/db.db: open failed: EISDIR (Is a directory)

我该如何解决这个问题?我读过这个主题但没有用: FileOutputStream crashes with "open failed: EISDIR (Is a directory)" error when downloading image

另外,我在读取设备上测试,同样的错误谢谢

最佳答案

我无法从您附加的日志行中得到完整的图片。

不过,如果我不得不猜测,您的问题可能出在这里:

  if(!databaseFile.exists()){
databaseFile.mkdirs();
}

请记住:mkdirs() 获取您传递给它的整个路径参数,将其分解,并在需要时创建新文件夹。mkdirs() 无法区分目录中的文件

所以,如果你这样调用它:

databaseFile.mkdirs("/sdcard/rootDir/resDir/myImage.png");

它将创建一个名为 myImage.png 的文件夹。

请检查您的代码并根据需要进行更改。

关于java - android 将数据库从 Assets 复制到 sdcard - 打开失败 : EISDIR (Is a directory),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24722194/

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