0

データベース ファイルを assets フォルダーに入れ、それを /data/data//database フォルダーにコピーしたいと考えています。この目的のために、次のコードを書きました。

public void copy()
{
    try
    {
        String dest_path = "/data/data/"+getPackageName()+"/database/sultandatabase";
        File f = new File(dest_path);
        if( !f.exists() )
        {
            copy_database(getBaseContext().getAssets().open(db_name),new FileOutputStream(dest_path));
        }
    }
    catch(Exception e)
    {
        Toast.makeText(this,"Sorry the file can not be opended", Toast.LENGTH_LONG).show();

    }
}

public void copy_database(InputStream io ,OutputStream ou) throws Exception
{
    byte[] buffer = new byte[1024] ;
    int lenght;

    while( ( lenght = io.read(buffer)) > 0 )
        ou.write(buffer);
    io.close();
    ou.close();

}

copy() を呼び出すと、データベース ファイルはコピーされません。考えられる理由は何ですか?? どうすればこれを修正できますか?? 代わりにトーストが表示されます。それは私のプログラムが例外を取得することを意味します?? しかし、なぜ ??

4

1 に答える 1

0

私はコピー用にこのコードを持っています:

private void copyDataBase()
{
    try
    {
    InputStream myInput = myContext.getAssets().open(DATABASE_NAME);
    String outFileName = DATABASE_PATH + DATABASE_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();
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }
}
于 2013-03-20T09:05:58.210 に答える