2013-04-25 2 views
1

Я создаю приложение для Android, для которого требуется, чтобы пустая база данных находилась в определенной папке sdcard. Поэтому я создаю код, загружая базу данных с сервера и вставляя в sdcard программно, который работает нормально. Теперь проблема заключается в том, что я запускаю приложение из системы, каждый раз, когда новая база данных принимает, заменяя старую базу данных. Теперь я хотел бы изменить код, если файл базы данных не существует в папке, то только мне нужно, чтобы загрузить и сохранить в определенной папкеAndroid: проверьте, что файл существует в папке или нет в sdcard.

и мой код здесь идет

 String DownloadUrl = "http://myexample.com/android/timeexample.db"; 
    String fileName = "timeexample.db"; 

    DownloadDatabase(DownloadUrl,fileName); 

public void DownloadDatabase(String DownloadUrl, String fileName) { 
    try { 
     File root = android.os.Environment.getExternalStorageDirectory(); 
     File dir = new File(root.getAbsolutePath() + "/timeexample/databases"); 
     if(dir.exists() == false){ 
      dir.mkdirs(); 
     } 
     URL url = new URL("http://myexample.com/android/timeexample.db"); 
     File file = new File(dir,fileName); 

     long startTime = System.currentTimeMillis(); 
     Log.d("DownloadManager" , "download beginning"); 
     Log.d("DownloadManager" , "download url:" +url); 
     Log.d("DownloadManager" , "download file name:" + fileName); 

     URLConnection uconn = url.openConnection(); 
     uconn.setReadTimeout(TIMEOUT_CONNECTION); 
     uconn.setConnectTimeout(TIMEOUT_SOCKET); 

     InputStream is = uconn.getInputStream(); 

     BufferedInputStream bufferinstream = new BufferedInputStream(is); 
     ByteArrayBuffer baf = new ByteArrayBuffer(5000); 
     int current = 0; 
     while((current = bufferinstream.read()) != -1){ 
      baf.append((byte) current); 
     } 
     byte[] buffer = new byte[1024]; 

     FileOutputStream fos = new FileOutputStream(file); 
     fos.write(baf.toByteArray()); 
     fos.flush(); 
     fos.close(); 
     Log.d("DownloadManager" , "download ready in" + ((System.currentTimeMillis() - startTime)/1000) + "sec"); 

    } 

    catch(IOException e) { 
     Log.d("DownloadManager" , "Error:" + e); 
     e.printStackTrace(); 
    } 
} 

Если Everytime я бегу, как это , мои данные отсутствуют, поскольку пустая база данных принимает. поэтому мое требование заключается в том, что база данных уже существует, а затем нет необходимости скачивать. Предоставлено множество примеров для устранения проблемы. Может ли кто-нибудь помочь мне решить проблему. Спасибо заранее.

ответ

0

для файла проверка базы данных существует или не использовать

File f = new File(Environment.getExternalStorageDirectory()+"/timeexample/databases/timeexample.db"); 
    if(f.exists()) 
    { 
    /* do whatever you want */ 
    } 

теперь дни существует два типа хранения доступны в андроид устройства, что я буду sagest использовать

boolean mExternalStorageAvailable = false; 
boolean mExternalStorageWriteable = false; 
String state = Environment.getExternalStorageState(); 

if (Environment.MEDIA_MOUNTED.equals(state)) { 
    // We can read and write the media 
    mExternalStorageAvailable = mExternalStorageWriteable = true; 
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
    // We can only read the media 
    mExternalStorageAvailable = true; 
    mExternalStorageWriteable = false; 
} else { 
    // Something else is wrong. It may be one of many other states, but all we need 
    // to know is we can neither read nor write 
    mExternalStorageAvailable = mExternalStorageWriteable = false; 
} 
1

попробовать это:

File extStore = Environment.getExternalStorageDirectory(); 
File myFile = new File(extStore.getAbsolutePath() + "/book1/page2.db"); 

if(myFile.exists()){ 
... 
} 
1

Вам необходимо вернуться из функции, если каталог уже существует

Вот ваш код

public void DownloadDatabase(String DownloadUrl, String fileName) { 
try { 
    File root = android.os.Environment.getExternalStorageDirectory(); 
    File dir = new File(root.getAbsolutePath() + "/timeexample/databases"); 
    if(dir.exists() == false){ 
     dir.mkdirs(); 
    } 

URL url = new URL("http://myexample.com/android/timeexample.db"); 
    File file = new File(dir,fileName); 

вам нужно изменить его

public void DownloadDatabase(String DownloadUrl, String fileName) { 
try { 
    File root = android.os.Environment.getExternalStorageDirectory(); 
    File dir = new File(root.getAbsolutePath() + "/timeexample/databases"); 
    if(dir.exists() == false){ 
     dir.mkdirs(); 
    } 
    else 
     return 

URL url = new URL("http://myexample.com/android/timeexample.db"); 
    File file = new File(dir,fileName);