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(); } } }
时间: 2024-10-11 22:58:29