2014-11-11 3 views
0

Я хочу скопировать базу данных из папки с данными на карту памяти телефона. Когда программа запускается .. программа остановить ..как скопировать базу данных из активов в ExternalStorage?

Это сообщение показывает в 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(); 


} 

}

+0

Где ваш NPE? Ум, отправляющий трассировку стека? – zgc7009

+0

Согласовано. Трассировка стека была бы очень полезной. – NSouth

+0

Теперь что мне делать? Извините, мой английский не очень хорош? – anjeli

ответ

0

Th прежде чем файл с именем «home.db»

И все же вы делаете

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

Так in остается нулевым, как пойманное IOException.

Попробуйте это:

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

Я надеюсь, что это поможет U уверен Также не забудьте дать разрешение - - accessexternal хранение