Android--查找程序根目录下所有文件/Java IO操作

来源:互联网 发布:若风淘宝 编辑:程序博客网 时间:2024/06/08 15:31

本实例实现的是浏览根目录下所有的文件,包含子目录下所有的文件,类似于实现“Windows资源管理器”,首先,先看下程序的实现截图:


这个程序应用的是ListActivity和JavaIO的知识。

首先,让我们先看下主程序的布局文件定义:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:orientation="vertical">  <TextView     android:id="@+id/mPath"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:padding="5px"    android:textSize="18sp"    android:textColor="@drawable/blue"  />  <ListView     android:id="@android:id/list"    android:layout_width="wrap_content"    android:layout_height="wrap_content"  /></LinearLayout>

其中,ListView中的各个子TextView也是由程序提供,布局文件如下:

<?xml version="1.0" encoding="utf-8"?><TextView   android:id="@+id/text1"  xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:textSize="20sp"/>

主程序的实现代码如下:

public class EX04_21 extends ListActivity{  /* 对象声明      items:存放显示的名称     paths:存放文件路径     rootPath:起始目录  */  private List<String> items=null;  private List<String> paths=null;  private String rootPath="/";  private TextView mPath;    /** Called when the activity is first created. */  @Override  protected void onCreate(Bundle icicle)  {    super.onCreate(icicle);        /* 加载main.xml Layout */    setContentView(R.layout.main);    mPath=(TextView)findViewById(R.id.mPath);        getFileDir(rootPath);  }    /* 取得文件架构的method */  private void getFileDir(String filePath)  {    /* 设定目前所在路径 */    mPath.setText(filePath);        items=new ArrayList<String>();    paths=new ArrayList<String>();      File f=new File(filePath);      File[] files=f.listFiles();    if(!filePath.equals(rootPath))    {      /* 第一笔设定为[回到根目录] */      items.add("Back to "+rootPath);      paths.add(rootPath);      /* 第二笔设定为[回上层] */      items.add("Back to ../");      paths.add(f.getParent());    }    /* 将所有文件加入ArrayList中 */    for(int i=0;i<files.length;i++)    {      File file=files[i];      items.add(file.getName());      paths.add(file.getPath());    }        /* 声明一ArrayAdapter,使用file_row这个Layout,                  并将Adapter设定给此ListActivity */    ArrayAdapter<String> fileList =        new ArrayAdapter<String>(this,R.layout.file_row, items);    setListAdapter(fileList);  }    /* 设定ListItem被按下时要做的动作 */  @Override  protected void onListItemClick(ListView l,View v,int position,long id)  {    File file = new File(paths.get(position));    if(file.canRead())    {      if (file.isDirectory())      {        /* 如果是文件夹就再进去读取 */        getFileDir(paths.get(position));      }      else      {        /* 如果是文件,则弹出AlertDialog */        new AlertDialog.Builder(this)            .setTitle("Message")            .setMessage("["+file.getName()+"] is File!")            .setPositiveButton("OK",              new DialogInterface.OnClickListener()              {                public void onClick(DialogInterface dialog,int which)                {                }              }).show();               }    }    else    {      /* 弹出AlertDialog显示权限不足 */      new AlertDialog.Builder(this)          .setTitle("Message")          .setMessage("权限不足!")          .setPositiveButton("OK",            new DialogInterface.OnClickListener()            {              public void onClick(DialogInterface dialog,int which)              {              }            }).show();         }  }}