我使用以下代码将数据库从assets文件夹复制到外部存储:
private void copyDataBase(String dbPath){
try{
InputStream assestDB = context.getAssets().open("databases/"+dbName);
OutputStream appDB = new FileOutputStream(dbPath,false);
byte[] buffer = new byte[1024];
int length;
while ((length = assestDB.read(buffer)) > 0) {
appDB.write(buffer, 0, length);
}
appDB.flush();
appDB.close();
assestDB.close();
}catch(IOException e){
e.printStackTrace();
}
}
我正在手机上尝试,发生的事情是复制了2048个字节,之后没有任何内容被复制(我的文件大约是13KB)。我做错了什么?
答案 0 :(得分:1)
我认为这不会导致你的问题,但是' -1'错误时返回,而不是' 0'。文档意味着' 0' 0永远不应该归还,但它可能是可能的。您可以尝试更改该行:
while ((length = assestDB.read(buffer)) > 0) {
为:
while ((length = assestDB.read(buffer)) != -1) {
看看是否有帮助。
您获得某些输出的事实使您不太可能拥有权限(Android或文件系统)违规。
答案 1 :(得分:0)
首先,确保您在清单中设置了WRITE_EXTERNAL_STORAGE
权限。然后,查看使用context.openFileOutput(String, int)
和Environtment
作为所需的文件目录。
Android培训指南提供了有关如何正确读取和写入文件的良好文档。
http://developer.android.com/training/basics/data-storage/files.html