为什么我无法在Android模拟器中将文件从文件目录复制到数据库?

时间:2018-06-20 04:52:58

标签: android android-studio android-emulator

我正在开发一个应用程序,该应用程序在files文件夹中包含一个数据库文件,我需要将其移动到databases文件夹中。我在模拟器中没有旧的数据库文件(在较早的应用程序版本中存在),因此我使用android studio中的设备文件浏览器将其手动上传到files文件夹中以测试功能。我用来复制文件的功能:

InputStream in = getInputStream(filepath);
OutputStream out = getOutputStream(destPath, false);

byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) > 0) {
  out.write(buffer, 0, length);
}
in.close();
out.close();

但是,它在第​​一行给了我错误:

Error: ENOENT: no such file or directory, open '/data/user/0/com.test/files/database.db'

我认为该问题与文件权限有关,因为每次我将任何文件上传到仿真器时都会给我错误,但是如果应用程序自行创建,它就可以正常工作。我对上传的文件拥有此权限:

-rwxrwxrwx 1 root root   24576 2018-06-19 22:34 database.db

但是,如果应用程序以编程方式创建文件,则会为其分配以下权限:

-rw------- 1  u0_a79 u0_a79 28672 2018-06-19 22:34 database.db

任何人都可以对正在发生的事情有所了解吗?并且,如果问题出在文件权限以外的问题上。

还有u0_a79 u0_a79而不是root root?

谢谢

0 个答案:

没有答案