如何从 asset/raw 目录访问文件
How to access a file from asset/raw directory
使用下面的代码,我试图访问存储在 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();
}
}
资产和资源是您开发机器上的文件。它们不是设备上的文件。
对于资产,在 AssetManager
上使用 open()
以获得资产的 InputStream
。
此外,FWIW:
Uri.parse("file:///android_asset/raw/default_book.txt").toString()
毫无意义,因为它给你的字符串与你开始时使用的字符串相同
file:///android_asset/
仅适用于 WebView
InputStream is = getAssets().open("default_book.txt");
将您的文本文件放在 Android 项目下的 /assets 目录中,然后使用 AssetManager class 如下访问它。
AssetManager am = context.getAssets();
InputStream is = am.open("default_book.txt");
或者你也可以将文件放在/res/raw目录下,从这里可以通过id访问文件如下
InputStream is =
context.getResources().openRawResource(R.raw.default_book);
由于实际问题没有得到充分回答,我们开始
InputStream is = context.getAssets().openFd("raw/"+"filename.txt")
上下文可以是 this
或 getActivity()
或基本上任何其他上下文
重要的是在文件名之前包含由 /
分隔的文件夹
在Kotlin中我们可以实现as-
val string = requireContext().assets.open("default_book.txt").bufferedReader().use {
it.readText()
}
使用下面的代码,我试图访问存储在 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();
}
}
资产和资源是您开发机器上的文件。它们不是设备上的文件。
对于资产,在 AssetManager
上使用 open()
以获得资产的 InputStream
。
此外,FWIW:
Uri.parse("file:///android_asset/raw/default_book.txt").toString()
毫无意义,因为它给你的字符串与你开始时使用的字符串相同file:///android_asset/
仅适用于WebView
InputStream is = getAssets().open("default_book.txt");
将您的文本文件放在 Android 项目下的 /assets 目录中,然后使用 AssetManager class 如下访问它。
AssetManager am = context.getAssets();
InputStream is = am.open("default_book.txt");
或者你也可以将文件放在/res/raw目录下,从这里可以通过id访问文件如下
InputStream is =
context.getResources().openRawResource(R.raw.default_book);
由于实际问题没有得到充分回答,我们开始
InputStream is = context.getAssets().openFd("raw/"+"filename.txt")
上下文可以是 this
或 getActivity()
或基本上任何其他上下文
重要的是在文件名之前包含由 /
在Kotlin中我们可以实现as-
val string = requireContext().assets.open("default_book.txt").bufferedReader().use {
it.readText()
}