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