2011-11-15 11 views
0

私がやっているアプリケーションには、外部のSQLiteデータベースがあります(assetsフォルダにあります)。私の友人は、iPhone版のアプリで同じDBファイルを使用しています。 DBファイルの内容は継続的に更新されます。両方のプロジェクトが同じリポジトリにあるので、両方の使用をその共有リソースにリンクできるように、DBファイルを保存するSharedフォルダを作成しました。それはiPhoneプロジェクトでは動作しますが、Androidでは失敗します。ファイルシステムにファイルへのリンクをEclipseで、私は資産/新しい/ファイルをクリックすると高度をクリックし、Android:外部ファイルをEclipseプロジェクトにリンクする

。ファイルはassetsフォルダ(Eclipse内)に表示​​されますが、JAVAコードからアクセスできません。

なぜ機能しないのですか?外部ファイルをEclipseのプロジェクトにリンクする他の方法はありますか?

おかげ

EDITED:私は、資産ファイル開くためにこのコードを使用

:あなたが質問に指定された詳細から、

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/にコピーして使用する必要があります。

EDIT:

は私が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の外部フォルダからリンクしたファイルにアクセスできません。このファイルにアクセスしてdata/data/databaseフォルダにコピーする必要があります。 – Marqs

+0

アセットからデータベースファイルを取得するためにこの行を挿入します。InputStream myInput = Context.getAssets()。open( "<データベースファイル名>");単純にデータベースファイルを資産に入れるだけで、資産のディレクトリ構造を作らないでください。 – user370305

+0

ディレクトリを削除してコードを置き換えても役に立ちませんでした。私はまだjava.io.FileNotFoundException:data.sqliteを取得します。アセットフォルダにディレクトリを作成しない理由を明確にしてください。 – Marqs

関連する問題