[英]How to read file from res/raw by name
我想從文件夾res / raw /中打開一個文件。 我絕對確定該文件存在。 打開我嘗試過的文件
File ddd = new File("res/raw/example.png");
命令
ddd.exists();
產生FALSE 。 因此,此方法不起作用。
試
MyContext.getAssets().open("example.png");
最終以getMessage()“ null”出現異常。
只需使用
R.raw.example
這是不可能的,因為文件名僅在運行時稱為字符串。
為什么訪問/ res / raw /文件夾中的文件如此困難?
在給定的鏈接的幫助下,我自己能夠解決問題。 正確的方法是使用
getResources().getIdentifier("FILENAME_WITHOUT_EXTENSION",
"raw", getPackageName());
使其作為InputStream獲得
InputStream ins = getResources().openRawResource(
getResources().getIdentifier("FILENAME_WITHOUT_EXTENSION",
"raw", getPackageName()));
這是從原始文件夾獲取XML文件的示例:
InputStream XmlFileInputStream = getResources().openRawResource(R.raw.taskslists5items); // getting XML
那么你也能:
String sxml = readTextFile(XmlFileInputStream);
什么時候:
public String readTextFile(InputStream inputStream) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte buf[] = new byte[1024];
int len;
try {
while ((len = inputStream.read(buf)) != -1) {
outputStream.write(buf, 0, len);
}
outputStream.close();
inputStream.close();
} catch (IOException e) {
}
return outputStream.toString();
}
您可以使用getResources().openRawResource(R.raw.myfilename)
讀取原始文件中的文件。
但是有一個IDE限制,即您使用的文件名只能包含小寫字母數字字符和點。 因此,諸如XYZ.txt
或my_data.bin
類的文件名不會在R中列出。
您可以使用以下兩種方法使用Kotlin讀取原始資源。
您可以通過獲取資源ID來獲取它。 或者,您可以使用字符串標識符,在其中可以以增量方式以編程方式更改文件名。
干杯
// R.raw.data_post
this.context.resources.openRawResource(R.raw.data_post)
this.context.resources.getIdentifier("data_post", "raw", this.context.packageName)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.