Android 如何将数据库从资产复制到外部存储?

Android 如何将数据库从资产复制到外部存储?,android,Android,我要复制一个数据库 从资产文件夹到我的手机存储卡。 当程序运行时。。 节目停止了 此消息在logCat中显示: java.lang.NullPointerException。。。 我很困惑。。 我不知道有什么问题 资产文件夹 有一个名为home.db的文件 请帮帮我 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { su

我要复制一个数据库 从资产文件夹到我的手机存储卡。 当程序运行时。。 节目停止了

此消息在logCat中显示: java.lang.NullPointerException。。。 我很困惑。。 我不知道有什么问题 资产文件夹 有一个名为home.db的文件 请帮帮我

public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    File f1=new File(Environment.getExternalStorageDirectory(),"aaa");
    f1.mkdir();

    InputStream in = null;
    try {
        Toast.makeText(getBaseContext(), "error", Toast.LENGTH_LONG).show();
        in = getBaseContext().getAssets().open("home");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        Toast.makeText(getBaseContext(), "error", Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }
    OutputStream ou = null;
    try {
        ou = new FileOutputStream(Environment.getExternalStorageDirectory()+"aaa"+ "/"+"home" );
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        CopyDB(in, ou);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public void CopyDB(InputStream in, OutputStream ou) throws IOException
{
    byte []buffer=new byte[1024];
    int length;
    while((length=in.read(buffer))>0)
    {
        try {
            ou.write(buffer, 0, length);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }
    in.close();
    ou.close();


}
}

有一个名为home.db的文件

然而你却在做什么

in = getBaseContext().getAssets().open("home");
因此,在捕获IOException时,in将保持null

试试这个:

in = getBaseContext().getAssets().open("home.db");

我希望这对你有帮助
另外,不要忘记授予权限--访问外部存储

您的NPE在哪里?介意发布堆栈跟踪吗?同意。堆栈跟踪将非常有用。现在我该怎么做?对不起,我的英语不是很好?