`
nanjingjiangbiao_T
  • 浏览: 2739592 次
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

本实例实现的是浏览根目录下所有的文件,包含子目录下所有的文件,类似于实现“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();     
    }
  }
}


分享到:
评论

相关推荐

    android 查找程序根目录下所有文件 java i/o与ListActivity的结合

    总结起来,通过结合Java的I/O流遍历文件和Android的ListActivity,我们可以实现查找并显示应用程序根目录下所有文件的功能。在实际开发中,还需要考虑权限管理(特别是对于Android 6.0及更高版本),以及对不同设备...

    查找程序根目录下的所有文件

    以上就是在不同开发环境和操作系统下查找程序根目录下所有文件的方法。请注意,访问文件系统时要考虑到权限问题,确保应用有足够的权限读取所需目录,并遵循最佳安全实践,防止潜在的安全风险。同时,对于移动设备,...

    android文件系统浏览器

    其中,Android的文件系统是其核心组成部分之一,对于开发者和高级用户来说,理解和掌握如何浏览、操作文件系统至关重要。本文将围绕“Android文件系统浏览器”这一主题,深入探讨其功能、工作原理以及如何实现对...

    类似QQ的Android文件管理

    Android提供了Java.IO和Android的开放文件访问API,如`Environment`类用于获取存储路径,`File`类用于文件和目录操作。 二、界面设计与布局 1. 文件浏览器:参考QQ文件管理器,我们需要设计一个清晰的文件浏览器,...

    android实现简单的文件浏览

    可以使用`java.io.File`类的`listFiles()`方法,它会返回当前目录下所有文件和子目录的File对象数组。 4. **文件过滤**:描述中提到要过滤出所有TXT文件。可以创建一个`FilenameFilter`实例,重写`accept()`方法,...

    个人写的Android文件浏览器源码

    1. **目录遍历**:程序需要能够列出设备的根目录,并递归地加载子目录。这通常通过调用`java.io.File`类的方法如`list()`或`listFiles()`来实现。 2. **文件显示**:文件浏览器应展示文件的基本信息,如名称、大小...

    纯java读取Apk信息,贡献全源码,可读取程序.apk中的AndroidManifest.xml所有信息

    在Android开发中,有时我们需要获取APK文件的详细信息,如应用名、版本号、权限等,这通常涉及对APK文件内部的AndroidManifest.xml文件进行解析。本篇将详细介绍如何仅使用Java代码,不依赖任何外部工具(如aapt)来...

    android读取sdcard的txt文件,翻书的效果

    使用`java.io.File`类或者`java.nio.file`包中的API来查找和列举SDCard上的所有TXT文件。可以遍历SDCard根目录,通过文件扩展名过滤出TXT文件。 3. **文件读取**: 读取TXT文件内容通常使用`BufferedReader`或`...

    android 文件搜索

    使用`java.io.File`的`list()`或`listFiles()`方法,可以获取指定目录下的所有文件或子目录。这些方法返回的是字符串数组,包含目录中的文件名或子目录名。可以通过递归方式遍历整个文件系统。 3. **文件过滤** ...

    文件浏览 打开sdcard文件夹。只显示文件夹和txt文件。过滤非txt文件。选择txt文件返回其名字。

    2. **SD卡目录**:在Android中,SD卡通常被映射为`/storage/emulated/0/`目录,用户可访问的根目录是`Environment.getExternalStorageDirectory()`,这通常会指向SD卡的公共可写区域。 3. **文件过滤**:为了只显示...

    Android源码——GetSDTree(简单SD卡文件浏览器).zip

    Android中,SD卡的根目录通常表示为`Environment.getExternalStorageDirectory()`,这个方法返回一个`File`对象,代表SD卡的根路径。通过这个对象,可以构建其他文件或目录的路径。 4. **UI设计**: 文件浏览器...

    安卓Android源码——SdCard读写文件实例.zip

    `Environment.getExternalStorageDirectory()`返回根目录的`File`对象,通常用于创建或查找外部存储上的文件或目录。 4. **创建文件** 使用`File`类的构造函数,传入路径字符串,可以创建一个`File`对象。例如: ...

    android播放器项目

    它能够从设备的根目录开始扫描所有的音频文件,并将这些文件添加到播放列表中供用户选择播放。此外,该播放器还具备基本的播放控制功能,如播放/暂停、跳至上一首或下一首以及通过进度条调整播放位置。 #### 二、...

    Android ndk获取手机内部存储卡的根目录方法

    在Android开发中,有时我们需要在Native层,也就是C/C++代码中访问设备的存储路径,以便进行文件操作。本文将详细介绍如何使用Android NDK(Native Development Kit)来获取手机内部存储卡的根目录。 首先,Android...

    AndroidSD卡扫描

    在Android系统中,SD卡(Secure Digital card)是设备扩展存储空间的重要部分,通常用于存储用户数据、应用程序、媒体文件等。当我们需要对SD卡进行管理或者查找特定文件时,就需要进行SD卡扫描。这个过程涉及到...

    FileManager_android_

    Android基于Linux内核,因此其文件系统遵循标准的Linux文件系统布局,包括根目录、data分区、缓存分区等。文件管理器需要能够遍历这些分区,并提供对内部存储和外部SD卡的访问。 源码中的关键组件之一是文件树的...

    扫描sdcard卡文本文件

    你可以通过`java.io.File`类或者Android的`android.os.Environment`类来访问这个路径,获取到SD卡的根目录。 2. **读取文本文件**:要读取文本文件,可以使用`BufferedReader`或`FileReader`类。首先创建一个`File`...

    SD Card文件搜索

    这个“SD Card文件搜索”案例旨在教你如何在Android系统中有效地查找并操作SD卡上的文件。以下是一些关于SD卡文件搜索的关键知识点: 1. **权限获取**: 在Android 6.0(API级别23)及以上版本,应用需要在运行时...

    java的1000个常用类

    6. `java.io.File`(2195次):File类用于表示文件和目录路径名。 7. `java.io.InputStream`(2125次):InputStream是所有字节输入流的基类,用于读取字节数据。 8. `java.util.Arrays`(2068次):Arrays类提供...

    properties文件的读取

    但需要注意的是,这种方法在Android中可能会出现问题,因为`getResourceAsStream()`默认从类路径中查找资源,而Android的资源文件位于`assets`或`res`目录下。 为了在不使用`context`的情况下读取`assets`中的`...

Global site tag (gtag.js) - Google Analytics