天天看點

java assetmanager_AssetManager asset的使用

Android

系統為每一個新設計的程式提供了/assets檔案夾,這個檔案夾儲存的檔案能夠打包在程式裡。/res

和/assets的不同點是,android不為/assets下的檔案生成ID。假設使用/assets下的檔案,須要指定檔案的路徑和檔案名稱。以下這個樣例,顯示怎樣訪問/assets下的内容。

在檔案裡/assets

中建立/image子檔案夾,将/res/drawable下的icon.png子檔案夾複制到該檔案夾中。在/assets子檔案夾中建立readme.txt檔案,檔案裡輸入文本“hello,world!!!”。

encoding="utf-8"

?>

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

程式檔案:

package

com.cn.getassets;

import

android.app.Activity;

import

android.os.Bundle;

import

java.io.ByteArrayOutputStream;

import

java.io.IOException;

import

java.io.InputStream;

import

android.app.Activity

;

import

android.content.res.AssetManager;

import

android.os.Bundle

;

import

android.util.Log;

import

android.widget.EditText;

public

class

GetAssets extends

Activity {

private

EditText

firstField;

private

EditText

secondField;

@Override

public

void

onCreate(Bundle savedInstanceState) {

super

.onCreate(savedInstanceState);

//  Log.d("show

main.xml","ok

");

setContentView(R.layout.main

);

Log.d

("show

main.xml","ok");

AssetManager assetManager =

getAssets();

String[] files =

null

;

try

{

files =

assetManager.list("image");

} catch

(IOException e)

{

Log.e

("tag", e.getMessage());

}

firstField = (EditText)

findViewById(R.id.firstId

);

firstField.setText(Integer.toString

(files.length)+"file.File

name is"+ files[0]);

InputStream inputStream =

null

;

try

{

inputStream =

assetManager.open("readme.txt");

} catch

(IOException e)

{

Log.e

("tag", e.getMessage());

}

String s =

readTextFile(inputStream);

secondField = (EditText)

findViewById(R.id.secondId

);

secondField.setText(s);

}

private

String

readTextFile(InputStream inputStream) {

ByteArrayOutputStream

outputStream = new

ByteArrayOutputStream();

byte

buf[] = new

byte

[1024];

int

len;

try

{

while

((len = inputStream.read(buf)) != -1) {

outputStream.write(buf, 0, len);

}

outputStream.close();

inputStream.close();

} catch

(IOException e)

{

}

return

outputStream.toString();

}

}

程式顯示結果:使用模拟器。

http://blog.sina.com.cn/s/blog_6cf0d3f30100m2x6.html