Android ApiDemos示例解析(47):Content->Assets->Read Asset

android.Content包定義瞭一些類,這些類主要用於在設備上訪問或是發佈數據,主要有三個包構成。

Content 共享 (android.content) 主要用於在Application的各個部件自己共享一些數據,主要的列有Content Provider,ContentResolver用於管理和發佈數據。 Intent,IntentFilter 用於Application不同組件之間發送消息。
Package 管理 (android.content.pm) 用於訪問Android Package (.apk)定義的Activities, Permissions, Services,Signatures和Providers,主要的類為PackageManager。
資源管理 (android.content.res) 用於訪問應用中定義的資源,如Strings,Drawables, Media,Device Configuration等等,主要的類為Resources。
一般來說Application把資源放在res目錄下面,有些情況下Application需要使用一些自定義的文件,一種方法是將它們放在res/raw 目錄下面,另外一種方法是將它們放在assets目錄下,和res 目錄不同的是,Android SDK不會為目錄assets 下的文件生成資源ID,而是通過AssetManager 以文件的文件名來訪問,放在/assets的目錄機構是什麼樣的,使用AssetManager 訪問時也是采用同樣的文件結構。和res相比,assets 提供瞭更低一層次的資源訪問。

本例使用AssetManager來訪問assets 目錄下的read_asset.txt 。

 

[java] 
InputStream is = getAssets().open("read_asset.txt");  
   
// We guarantee that the available method returns the total   
// size of the asset…  of course, this does mean that a single   
// asset can't be more than 2 gigs.   
int size = is.available();  
   
// Read the entire asset into a local byte buffer.   
byte[] buffer = new byte[size];  
is.read(buffer);  
is.close();  
   
// Convert the buffer into a string.   
String text = new String(buffer);  
   
// Finally stick the string into the text view.   
TextView tv = (TextView)findViewById(R.id.text);  
tv.setText(text); 
InputStream is = getAssets().open("read_asset.txt");
 
// We guarantee that the available method returns the total
// size of the asset…  of course, this does mean that a single
// asset can't be more than 2 gigs.
int size = is.available();
 
// Read the entire asset into a local byte buffer.
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
 
// Convert the buffer into a string.
String text = new String(buffer);
 
// Finally stick the string into the text view.
TextView tv = (TextView)findViewById(R.id.text);
tv.setText(text);

 

在Activity 中可以通過getAssets() 來取得AssetManager對象,和文件操作類似AssetManager可以通過字節流的方式來讀取文件。

 


作者:mapdigit
 

 

發佈留言