2011-05-11 3 views
0

私はアンドロイドのアプリケーションで非常に複雑な方法(私によって書かれていない)を使用しています。私のアンドロイドアプリでは、文字列パラメータ "path"をとり、そのパスからファイルを開き、解析します。 問題はこれです:私は自分のsdcard上のファイルへのパスを設定すると(このように:Environment.getExternalStorageDirectory()+ "/ myfile.txt")うまく動作します。 しかし私は自分のファイルをユーザが利用できるようにしたくないので、ファイルをコピーしたプロジェクトのassetsフォルダへのパスを設定しようとしましたが、このパスを使用すると動作しません。アセットフォルダ内のファイルは次のようになります。ファイル:///android_asset/myfile.txt なぜ、最初のパスは正常に動作し、2番目のパスは何もしませんか?あなたは資産フォルダ内のファイルにアクセスするためにAssetManagerを使用する必要が私のファイルへのアンドロイドのパス

おかげ

+0

///は "非常に複雑な方法" へのパラメータとして送信される "アウト" に

パス "で" からメソッドをコピーします使用している「非常に複雑な方法」のコードを編集するアクセス権(および権利)がありますか? – TofferJ

答えて

1

+0

これは、アプリプロジェクトのassetsフォルダが.apkアーカイブのパークであり、アプリがインストールされているときにデバイスやエミュレータの別のフォルダではないため、通常のファイルを使用してアクセスすることができないためですアクセス機能。 – RivieraKid

+0

RivieraKidに感謝します。理にかなっている – user347187

0

これは私がやったことです:アセットからアプリケーションのデータディレクトリにファイルをコピーし、このパスを「非常に複雑なメソッド」に送信するメソッドを作成しました。 これで正常に動作します。 コードサンプル(多分それは将来的に他の人を助ける):。

/// =のgetAssets()オープン( "myfile.txtの")で資産フォルダ

のInputStreamからファイルを開きます。それに

を出力し、場所を作成

/// ///あなたが

(新しいファイル( "データ/データ/ myAppPackageName /データベース/"))を好きなパスを設定することができます。 mkdirs();

OutputStream out =新しいFileOutputStream( "data/data/myAppPackageName/databases/myfile.txt"); "データ/データ/ myAppPackageName /データベース/ myfile.txtの"