Androidは、特定のタイプのリソースをロードするための作業を非常に簡単にするようです。殴られた道を少し離れると、あまり役に立たないようです。画像、サウンド、その他のオブジェクトをアセットフォルダーから読み込むことができるのは、それらが特定のタイプである場合のみです。自分の形式のバイナリファイルを読み込もうとすると、ディレクトリを一覧表示すると明らかにそこにあることが示されていても、「ファイルが見つかりません」という例外が発生します。
次の方法を使用して、アセットディレクトリからカスタム形式のバイナリファイルを読み取ってみました。
File jfile = new File("file://android_asset/"+filename); //tried to get the URI of the assets folder
JarFile file = new JarFile("assets/"+filename); //tried assuming the assets folder is root
fd = am.openNonAssetFd( filename); //tried getting my file as an non asset in the assets folder (n.b. it is definitely there)
fs = am.open(filename, AssetManager.ACCESS_BUFFER); //tried loading it as an asset
アンドロイドファイルI/Oには、まだわからない基本的なことがあると思います。資産管理の文書化は不完全であるように思われ、これを故意に直感的でないものにする理由があるに違いありません(セキュリティと関係がありますか?)。それで、Androidアプリ内に自分のフォーマットのバイナリファイルをロードするためのばかげた、標準的な方法は何ですか?
アップデート:
file:/// android_asset /を試しましたが、それでも喜びはありません。
String fullfilename = "file:///android_asset/"+filename;
File jfile = new File(fullfilename);
if (jfile.exists())
{
return new FileInputStream(jfile);
}
else
{
return null; //the file does exist but it always says it doesn't.
}
ファイルまたはプロジェクトマニフェストに必要な権限はありますか?
ありがとう