我正在开发一个应用程序,该应用程序在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?
谢谢