標籤:
1.檔案讀取方式
AssetManager.open(String filename),返回的是一個InputSteam類型的位元組流,這裡的filename必須是檔案,而不能是檔案夾,AssetManager開啟資源檔的open方法是一個重載方法,可以添加一個開啟檔案的int參數,根據參數不同可做相應操作。
2.資源檔是可以存在檔案夾以及子目錄
public final String[]list(String path),返回目前的目錄下面的所有檔案以及子目錄的名稱。可以通過遞迴遍曆整個檔案目錄,實現所有資源檔的訪問。
MainActivity.java
package cn.lixyz.iotest.activity;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import cn.lixyz.iotest.R;import cn.lixyz.iotest.util.IOFile;public class MainActivity extends Activity implements OnClickListener { private Button bt_asset_read; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findView(); bt_asset_read.setOnClickListener(this); } public void findView() { bt_asset_read = (Button) findViewById(R.id.bt_asset_read); } @Override public void onClick(View v) { IOFile ioFile; switch (v.getId()) { case R.id.bt_asset_read: ioFile = new IOFile(this); ioFile.readFromAsset(this); break; } }}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="cn.lixyz.iotest.activity.MainActivity" > <Button android:id="@+id/bt_asset_read" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="ASSET目錄讀取" /></LinearLayout>
IOFile.java
package cn.lixyz.iotest.util;import java.io.IOException;import java.io.InputStream;import android.content.Context;import android.content.res.AssetManager;import android.util.Log;public class IOFile { Context mContext; public IOFile(Context context) { mContext = context; } // 讀取asset目錄中的內容 public void readFromAsset(Context context) { try { // 擷取asset管理器 AssetManager assetManager = context.getAssets(); // 通過asset管理器擷取asset目錄下的子目錄下的檔案 String[] filesName = assetManager.list("txts"); // 迴圈讀出檔案內容 for (int i = 0; i < filesName.length; i++) { InputStream inputStream = assetManager.open("txts/" + filesName[i]); byte[] bytes = new byte[inputStream.available()]; inputStream.read(bytes); String str = new String(bytes); Log.d("TTTT", filesName[i] + "的內容是:" + str); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
Android筆記(四十九) Android中的資源訪問——asset