2011-11-15 49 views
0

我工作的應用程序有一個外部SQLite數據庫(位於資產文件夾中)。我的朋友在iPhone版本的應用程序中使用相同的數據庫文件。 DB文件的內容不斷更新。由於兩個項目都位於同一個存儲庫中,因此我們創建了一個共享文件夾,我們在該文件夾中保留數據庫文件,以便兩者都可以鏈接到共享資源它適用於iPhone項目,但在Android中失敗。Android:將外部文件鏈接到Eclipse項目

當在Eclipse中,我點擊資產/新/文件並點擊高級然後鏈接文件系統到文件。該文件出現在assets文件夾中(在Eclipse中),但我無法從JAVA代碼訪問它。

爲什麼這不起作用?還有沒有其他的將外部文件鏈接到Eclipse中的項目?

感謝

編輯:

我使用此代碼用於打開資產文件:

OutputStream os = new FileOutputStream(db_path + DB_NAME); 
byte []b = new byte[1024]; 
int i, r; 

//load list of files from 'data' folder 
String[] fileCollection = am.list("data"); 
Arrays.sort(fileCollection); 
for(i=0;i<fileCollection.length;i++) 
{ 
    //String fn = String.format(DB_NAME"%dd.db", (i + 1)); 
    String fn = DB_NAME + "." + (i + 1); 
    if(fileCollection[i].equals(fn) == false){ 
     break; 
    } 
    InputStream is = am.open("data/"+fn); 
    while((r = is.read(b)) != -1) { 
     os.write(b, 0, r); 
    } 
    is.close(); 
} 
os.close(); 
+0

從資產訪問該文件的代碼是什麼? – user370305

+0

請查看更新 – Marqs

+0

看看我編輯的答案。 – user370305

回答

1

從,你在問題中給出的細節,我的結論是,你不能使用數據庫文件直接從資產目錄,您必須將該數據庫文件複製到應用程序的內部存儲data/data/database/,然後使用它。

編輯:

我覺得Android的環境不能識別你的系統文件的物理路徑,所以當我們嘗試鏈接資產或在Android項目層次則任何文件的任何文件夾它找不到從系統路徑鏈接的文件。

So to make it working in android you have to put that file in your asset directory physically, not virtually (by putting file link in asset). 

希望我在這裏沒有錯。如果是,那就讓我知道這個話題。

謝謝。

+0

請參閱更新。我無法訪問我在Eclipse中從外部文件夾鏈接的文件。我必須首先訪問此文件才能將其複製到數據/數據/數據庫文件夾。 – Marqs

+0

放置此行以獲取資產的數據庫文件,InputStream myInput = Context.getAssets()。open(「」);請不要在資產中創建目錄結構,只需將簡單的數據庫文件放入資產中即可。 – user370305

+0

刪除目錄並替換代碼沒有幫助。我仍然得到java.io.FileNotFoundException:data.sqlite。你能否澄清爲什麼我不應該在資產文件夾中創建目錄? – Marqs

相關問題