通過Uri加載raw目錄下的文件
在開發(fā)過程中,有些文件可能需要原封不動(dòng)的打包到apk中,比如一些特殊的圖片或者數(shù)據(jù)庫文件等,Android提供了兩個(gè)文件夾可以保存原始文件,一個(gè)是 assets 文件夾,另一個(gè)是res目錄下的raw文件夾。
區(qū)別
raw目錄通常用于存儲(chǔ)原始的、未經(jīng)處理的文件,例如文本文件、數(shù)據(jù)文件、配置文件等。這些文件會(huì)被映射到R.java文件中,訪問的時(shí)候可以通過使用資源ID即R.raw.filename。
assets目錄通常用于存儲(chǔ)需要在網(wǎng)頁或應(yīng)用程序中使用的資源文件,例如圖片、音頻、視頻等。這些文件可能需要在網(wǎng)頁中引用或在應(yīng)用程序中加載和顯示。文件不會(huì)被映射到R.java中,訪問的時(shí)候需要AssetManager類。
讀取文件
// 讀取raw目錄中的文件
InputStream inputStream = getResources().openRawResource(R.raw.filename);
// 讀取assets目錄中的文件
InputStream inputStream = getAssets().open("filename");
其中R.raw.filename是raw目錄中的文件的引用,而"filename"是assets目錄中的文件名。
「通過Uri獲取raw目錄文件」有的時(shí)候我們可能需要從Uri來獲取這些文件
// 獲取uri
Uri uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + context.packageName + "/raw/" + fileName);
// 獲取文件流
InputStream inputStream = getResolver().openInputStream(uri);
「通過File獲取assets目錄文件」assets目錄下的文件有絕對(duì)路徑,比如文件assets/images/image.jpg
String path = "file:///android_asset/images/image.jpg"; // 路徑
File file = new File(path);