public void copyDbToInternalFolder() throws IOException {
String DB_PATH = Environment.getDataDirectory().getPath()+getPackageName()+"/Databases/"; // Don't worry I know this line doesn't work, however, nothing was working
String DB_NAME = "Client_Responses.db";
InputStream myInput = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS,"Client_Responses.db"); //needs to get database file from Downloads folder
String outFileName = DB_PATH + DB_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
我已经编写了几个相关应用程序,可以在设备下载文件夹中创建sqlite数据库文件。我需要坚持这种方法,以支持一路回到第一代平板电脑。 API 8本质上。
现在,管理员需要从“下载”文件夹中导入找到的文件,然后将其导入到自己的数据库文件夹中。
上面的代码不起作用,空指针异常和错误的文件名/路径名创建错误,应用程序将强制退出,我已经尝试了似乎所有的东西。我的想法现在已成为瓶颈。
我一直在努力解决这个问题并欢迎投入。
注意:我很可能会复制不同类文件中的代码,每个文件都复制一个不同的数据库名称。
答案 0 :(得分:0)
private void copyDbToInternalFolder() throws IOException {
String ToDB_PATH = "/data/data/"+this.getPackageName()+"/databases/";
String sourcePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/Client_Responses.db";
File source = new File(sourcePath);
String destinationPath = ToDB_PATH + "/" + DB_NAME;
File destination = new File(destinationPath);
try
{
FileUtils.copyFile(source, destination);
}
catch (IOException e)
{
e.printStackTrace();
}
}
这似乎适用于Android4.2.2平板电脑,但不适用于模拟器。我无法确定问题是模拟器以及它如何处理路径创建,或者它的API8是否无法理解它们。如果有人有任何建议,我将不胜感激。所以问题只是部分回答。