android下raw目录的作用,Android 之 assets目录和raw目录
Android 中存在assets目錄和raw目錄,它們既有相似之處又有所不同。
一、共同點:
目錄下的資源會被原封不動的拷貝到APK中,而不會像其它資源文件那樣被編譯成二進制的形式。
二、區別
1、最直觀的就是獲取它們的 InputStream 的API不一樣。
獲取assets資源:InputStream assets = getAssets().open("xxxx");
獲取raw資源:InputStream raw = getResources().openRawResource(R.raw.xxxx)
2、assets 下可以創建目錄結構,而 res/raw 不可以。
3、assets 能夠動態的列出assets中的所有資源 getAssets().list(String path); ,而 res/raw 不可以。
下面來說說它們主要的區別:
由于 raw 是Resources (res)的子目錄,Android會自動的為這目錄中的所有資源文件生成一個ID,這個ID會被存儲在R類當中,作為一個文件的引用。這意味著這個資源 文件可以很容易的被Android的類和方法訪問到,甚至在Android XML文件中你也可以@raw/的形式引用到它。在Android中,使用ID是訪問一個文件最快捷的方式。MP3和Ogg文件放在這個目錄下是比較合適 的。
assets目錄更像一個附錄類型的目錄,Android不會為這個目錄中的文件生成ID并保存在R類當中,因此它與 Android中的一些類和方法兼容度更低。同時,由于你需要一個字符串路徑來獲取這個目錄下的文件描述符,訪問的速度會更慢。但是把一些文件放在這個目 錄下會使一些操作更加方便,比方說拷貝一個數據庫文件到系統內存中。要注意的是,你無法在Android XML文件中引用到assets目錄下的文件,只能通過AssetManager來訪問這些文件。數據庫文件和游戲數據等放在這個目錄下是比較合適的。
另 外,網上關于assets和raw的資料,有說這兩者中單個文件大小不能超過1M,即如果讀取超過1M的文件 會報"Data exceeds UNCOMPRESS_DATA_MAX (1314625 vs 1048576)"的IOException,還引申出種種解決方案。經驗證,寫了個Demo,發現將近5M的壓縮 包在assets和raw中都能正常訪問,因此在這里糾正一下,理論上只要打包不超過Android APK 50M大小的限制都是沒有問題的。當然了,不排除是Android很早期的時候因為設備硬件原因aapt在編譯的時候對這兩個文件夾大小做出了限制,如果是這樣,較新版的ADT應該不會出現這種情況。
http://ponystyle.com/blog/2010/03 /26/dealing-with-asset-compression-in-android-apps/ 。這篇文章應該還蠻有說服力的,從根本上說明了當時Android2.3以前產生資源文件單個文件大小不能超過1M的原 因和部分解決方法。不過由于限制是當時的aapt決定的,現在已經更新了多個版本的aapt已經不存在這種問題了。
Android Studio增加assets目錄、raw目錄
assets與res/raw不同 assets目錄是Android的一種特殊目錄,用于放置APP所需的固定文件,且該文件被打包到APK中時,不會被編碼到二進制文件. Android還存在一種放置在re ...
【轉】android資源目錄---assets與res/raw區別
blog.csdn.net/hshm20517/article/details/6461890 assets:用于存放需要打包到應用程序的靜態文件,以便部署到設備中.與res/raw不同點在于,ASS ...
android資源目錄---assets與res/raw區別
android資源目錄---assets與res/raw的不同 Android 2011-05-24 14:40:21 閱讀20 評論0 ? 字號:大中小 訂閱 assets:用于存放需要打包到應用程 ...
AssetsUtils【讀取assets、res/raw、./data/data/包名/目錄下的文件】
版權聲明:本文為HaiyuKing原創文章,轉載請注明出處! 前言 封裝了以下功能: 1.讀取assets目錄下的資源html.文件.圖片,將文件復制到SD卡目錄中: 2.讀取res/raw目錄下的文 ...
Android開發 assets目錄
Android資源文件分類: Android資源文件大致可以分為兩種: 第一種是res目錄下存放的可編譯的資源文件: 這種資源文件系統會在R.Java里面自動生成該資源文件的ID,所以訪問這種資源文件 ...
assets與res/raw資源目錄的區別
1.簡介 assets和res/raw工程目錄下都可以放一些小于1M的文件(2.3版本以前要求,否則將不能讀出數據.),這些文件將被原樣打包到APK中應用使用. 2.不同 assets目錄下的文件將原 ...
Android讀取assets目錄下的資源
1.獲取資源的輸入流 資源文件 sample.txt 位于 $PROJECT_HOME/assets/ 目錄下,可以在 Activity 中通過 Context.getAssets().open(“s ...
Android讀寫assets、raw、sdard和工程文件的方法
Android開發離不開對文件的操作,前面的文章“Android簡易數據存儲之SharedPreferences”和“Android數據存儲之SQLite的操作”,分別講解了簡單的數據的存儲和數據庫數 ...
Android快速開發常用知識點系列目錄
項目構建 Android項目目錄結構模板以及簡單說明[簡單版] Android Studio配置統一管理依賴版本號引用 Android多Module下的Application引用方式 APP開篇 An ...
隨機推薦
Activity 橫豎屏切換
前言 在開發中常要處理橫豎屏切換,怎么處理先看生命周期 申明 Activity 橫豎屏切換時需要回調兩個函數 ,所以在此將這個兩個函數暫時看成是Activity 橫豎屏切換的生命周期的一部分,這兩個函 ...
Win7 64位命令行編譯cuda及設置Windows顯卡響應時間
在開始菜單中找到Visual Studio 2013 >>?Visual Studio Tools 選擇86或64版本的VC命令提示符環境,我用的 VS2013 x86 Native To ...
[salesforce] URLFOR function finally
While developing your Visualforce pages you may need to be able to obtain the URL of certain actions ...
Event/window.Event屬性和方法
type:事件的類型,如onlick中的click:srcElement/target:事件源,就是發生事件的元素:button:聲明被按下的鼠標鍵,整數,1代表左鍵,2代表右鍵,4代表中鍵,如果按下 ...
Visual C#使用DirectX實現視頻播放
Visual C#使用DirectX實現視頻播放 visual|視頻播放 - 很多人第一次接觸到DirectX大都是通過游戲,至于安裝.升級DirectX的原因無非是滿足游戲運行的需要.Direct ...
eclipse的插件
jode_1.0.6(Java Optimize and Decompile Environment ) 非常好用的Eeclipse的反編譯插件,隨時點擊,隨時查看源代碼,但他的官方下載的都是核心源碼 ...
vscode 正則表達式替換
比如把1.aa2.bbb替換成 1.aa2.bbb則,查找\d+ 替換成 \n$0 $0為查找的正則匹配項editplus為\0
使用kermit通過串口升級uboot
在開發板的啟動選項中看到如下兩行: 7: Load Boot Loader code then write to Flash via Serial. 9: Load Boot Loader code ...
學習筆記TF025:自編碼器
傳統機器學習依賴良好的特征工程.深度學習解決有效特征難人工提取問題.無監督學習,不需要標注數據,學習數據內容組織形式,提取頻繁出現特征,逐層抽象,從簡單到復雜,從微觀到宏觀. 稀疏編碼(Sparse ...
nova event
nova處理neutron發送過來的event事件.暫時追蹤nova event部分代碼 tail -f /var/log/nova/nova-api.log ?下面就是一個事件??Creating ...
總結
以上是生活随笔為你收集整理的android下raw目录的作用,Android 之 assets目录和raw目录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 轻薄笔记本电脑哪款好如何选择笔记本电脑轻
- 下一篇: 你的电脑性能过时了吗你的电脑性能过时了吗