日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 读取assets文件夹下的文件资源

發布時間:2024/4/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 读取assets文件夹下的文件资源 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.



今天,簡單講講如何讀取assets文件夾下的文件。


Android資源文件大致可以分為兩種:

第一種是res目錄下存放的可編譯的資源文件:

這種資源文件系統會在R.Java里面自動生成該資源文件的ID,所以訪問這種資源文件比較簡單,通過R.XXX.ID即可;

第二種是assets目錄下存放的原生資源文件:

因為系統在編譯的時候不會編譯assets下的資源文件,所以我們不能通過R.XXX.ID的方式訪問它們。那我么能不能通過該資源的絕對路徑去訪問它們呢?因為apk安裝之后會放在/data/app/**.apk目錄下,以apk形式存在,asset/res和被綁定在apk里,并不會解壓到/data/data/YourApp目錄下去,所以我們無法直接獲取到assets的絕對路徑,因為它們根本就沒有。

還好android系統為我們提供了一個AssetManager工具類。

查看官方API可知,AssetManager提供對應用程序的原始資源文件進行訪問;這個類提供了一個低級別的API,它允許你以簡單的字節流的形式打開和讀取和應用程序綁定在一起的原始資源文件。???

Android除了提供/res目錄存放資源文件外,在/assets目錄也會提供存放資源文件,在/assets目錄下面不會在R.java里面自動生成ID,所以讀取assets目錄下面的資源文件需要提供路徑,我們可以通過AssetManager類來訪問這些文件。


assets文件夾資源的訪問

assets文件夾里面的文件都是保持原始的文件格式,需要用AssetManager以字節流的形式讀取文件。

?? ? ?1. 先在Activity里面調用getAssets()?來獲取AssetManager引用。 ?? ? ?2. 再用AssetManager的open(String fileName, int accessMode)?方法則指定讀取的文件以及訪問模式就能得到輸入流InputStream。? ?? ? ?3. 然后就是用已經open file 的inputStream讀取文件,讀取完成后記得inputStream.close()?。 ?? ? ?4.調用AssetManager.close()?關閉AssetManager。

需要注意的是,來自Resources和Assets 中的文件只可以讀取而不能進行寫的操作
以下為從Raw文件中讀取:
代碼

public String getFromRaw(){ try { InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));BufferedReader bufReader = new BufferedReader(inputReader);String line="";String Result="";while((line = bufReader.readLine()) != null)Result += line;return Result;} catch (Exception e) { e.printStackTrace(); } } 以下為直接從assets讀取 代碼public String getFromAssets(String fileName){ try { InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) ); BufferedReader bufReader = new BufferedReader(inputReader);String line="";String Result="";while((line = bufReader.readLine()) != null)Result += line;return Result;} catch (Exception e) { e.printStackTrace(); }}



接下來舉個例子

我們新建一個工程文件,命名為AssetsDemo。


然后建立一個布局文件,如下,很簡單,無需我多介紹,大家一看就明白。

然后呢,我從網上找了段文字,存放在assets文件目錄下,取名為health.txt 這就是今天我們要讀取的文件啦。

health.txt可以自己寫點內容放進assets文件夾下就可以了。

接下來,就是今天的重頭戲,Android讀取文件的核心代碼。就直接貼代碼了。

package com.assets.cn; import java.io.InputStream; import org.apache.http.util.EncodingUtils; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.widget.TextView; public class AssetsDemoActivity extends Activity { public static final String ENCODING = "UTF-8"; TextView tv1;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);tv1 = (TextView)findViewById(R.id.tv1); tv1.setTextColor(Color.BLACK); tv1.setTextSize(25.0f); tv1.setText(getFromAssets("health.txt")); }//從assets 文件夾中獲取文件并讀取數據 public String getFromAssets(String fileName){String result = "";try { InputStream in = getResources().getAssets().open(fileName); //獲取文件的字節數 int lenght = in.available(); //創建byte數組 byte[] buffer = new byte[lenght]; //將文件中的數據讀到byte數組中 in.read(buffer); result = EncodingUtils.getString(buffer, ENCODING); } catch (Exception e) { e.printStackTrace(); } return result; } }


然后就可以運行了。


android 讀取assets文件夾下的文件資源就講完了。


就這么簡單。




總結

以上是生活随笔為你收集整理的android 读取assets文件夹下的文件资源的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。