以下のコードでは、asset/raw
フォルダに保存されているファイルにアクセスしようとしていますが、null
を取得しています
E/ERR: file:/Android_asset/raw/default_book.txt (No such file or directory)
エラー、私のコードは:
private void implementingDefaultBook() {
String filePath = Uri.parse("file:///Android_asset/raw/default_book.txt").toString();
File file = new File(filePath);
try {
FileInputStream stream = new FileInputStream(file);
} catch (Exception e) {
e.printStackTrace();
Log.e("ERR ", e.getMessage());
} catch (OutOfMemoryError e) {
e.printStackTrace();
}
}
テキストファイルをAndroidプロジェクトの下の/ assetsディレクトリに配置し、次のようにAssetManagerクラスを使用してアクセスします。
AssetManager am = context.getAssets();
InputStream is = am.open("default_book.txt");
または、/ res/rawディレクトリにファイルを置くこともできます。このディレクトリから、次のようにidでファイルにアクセスできます
InputStream is =
context.getResources().openRawResource(R.raw.default_book);
資産とリソースは、開発マシン上のファイルです。デバイス上のファイルではありません。
アセットの場合、AssetManager
でopen()
を使用して、アセットでInputStream
を取得します。
また、FWIW:
Uri.parse("file:///Android_asset/raw/default_book.txt").toString()
は、あなたが始めたのと同じ文字列を与えるので無意味です
file:///Android_asset/
はWebView
でのみ機能します
実際の質問には十分に答えられなかったので、ここに行きます
_InputStream is = context.getAssets().openFd("raw/"+"filename.txt")
_
コンテキストはthis
またはgetActivity()
または基本的に他のコンテキストにすることができます
重要なのは、_/
_で区切られたファイル名の前にフォルダーを含めることです
InputStream is = getAssets().open("default_book.txt");