Android 如何将数据库从资产复制到外部存储?
我要复制一个数据库 从资产文件夹到我的手机存储卡。 当程序运行时。。 节目停止了 此消息在logCat中显示: java.lang.NullPointerException。。。 我很困惑。。 我不知道有什么问题 资产文件夹 有一个名为home.db的文件 请帮帮我Android 如何将数据库从资产复制到外部存储?,android,Android,我要复制一个数据库 从资产文件夹到我的手机存储卡。 当程序运行时。。 节目停止了 此消息在logCat中显示: java.lang.NullPointerException。。。 我很困惑。。 我不知道有什么问题 资产文件夹 有一个名为home.db的文件 请帮帮我 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { su
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在哪里?介意发布堆栈跟踪吗?同意。堆栈跟踪将非常有用。现在我该怎么做?对不起,我的英语不是很好?