Android编程实现文件浏览功能的方法【类似于FileDialog的功能】

本文实例讲述了Android编程实现文件浏览功能的方法。分享给大家供大家参考,具体如下:

最近正在弄上传文件,当时想怎么能实现fileDialog的功能呢,打开文件,浏览文件,然后选择文件呢,查了好多资料,也看了不少论坛,都说里面没有这个功能,那真是奇怪了,里面没有这个功能,当然就需要自己动手添加这个功能了。

首先说一下这个文件浏览的简单实现原理:

首先选择一个目录做为根目录,然后打开此目录,常用的就是使用File这个类了,如下:

File file=new File(path);

然后可以通过获取到此目录下所有文件及文件夹的列表:

如下:

File[] files = file.listFiles();

然后再根据根据得到的文件,来判断是文件夹还是文件,如果是文件夹,那么我们就将文件夹添加到列表中,如果是文件那么就把文件添加到列表中进行显示,如果需要显示图标的话,那么就需要根据文件的后缀,设置不同的图标了。我是在ListView中进行显示的。

基本代码如下:

for (File currentFile : files)
{
  //判断是一个文件夹还是一个文件
  if (currentFile.isDirectory())
  {
    currentIcon = getResources().getDrawable(R.drawable.folder);
  }
  else
  {
    //取得文件名
    String fileName = currentFile.getName();
    //根据文件名来判断文件类型,设置不同的图标
    if (checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingImage)))
    {
      currentIcon = getResources().getDrawable(R.drawable.image);
    }
    else if (checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingWebText)))
    {
      currentIcon = getResources().getDrawable(R.drawable.webtext);
    }
    else if (checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingPackage)))
    {
      currentIcon = getResources().getDrawable(R.drawable.packed);
    }
    else if (checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingAudio)))
    {
      currentIcon = getResources().getDrawable(R.drawable.audio);
    }
    else if (checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingVideo)))
    {
      currentIcon = getResources().getDrawable(R.drawable.video);
    }
    else
    {
      currentIcon = getResources().getDrawable(R.drawable.text);
    }
  }
}

下面是根据后缀对文件的类型进行的判断:

//通过文件名判断是什么类型的文件
private boolean checkEndsWithInStringArray(String checkItsEnd, String[] fileEndings)
{
    for(String aEnd : fileEndings)
    {
      if(checkItsEnd.endsWith(aEnd))
        return true;
    }
    return false;
}

那么这样我们就可以显示出来带图标的列表了,现在到了如果打开子目录的介绍了,首先对Listview添加点击事件,在点击之后,我们根据点击的内容进行判断,判断是文件还是文件夹,如果是文件夹,那么再次调用显示,并且将以前显示的内容清空即可,显示出来,如果是文件的话,那么这个根据我们的需要进行操作:如打开、选择等等操作了。

上面所写的就是关于如何自己做一个文件浏览器,而且在这里还可以根据不同的使用地方,让其显示特定的文件。这个需要读者在自己的使用中自己慢慢熟悉与摸索了!

这个Listview也是根据自己的需要进行了布局,相信通过学习这一篇文章,你肯定会以File及ListView的使用有一个了解,也希望做出自己实用的文件浏览器!

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android文件操作技巧汇总》、《Android数据库操作技巧总结》、《Android编程之activity操作技巧总结》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • Android文件选择器ExFilePicker的使用方法

    在新版的android中(如Android 7.0+),文件选择由于权限限制,Uri变化,文件资源路径格式改版等等,变得比较复杂起来,比如,得在Androidmanifest配置FileProvider完了还得写xml目录下的文件path这些等等.一些第三方的文件选择器,就算没有上面这些动作,一般也得在Androidmanifest写几个Activity.而ExFilePicker则无需上面的繁琐操作,一不需要在Androidmanifest里面定义FileProvider,二不需要写xml文件

  • Android开发实现Files文件读取解析功能示例

    本文实例讲述了Android开发实现Files文件读取解析功能.分享给大家供大家参考,具体如下: package com.example.file; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widg

  • Android编程之文件读写操作与技巧总结【经典收藏】

    本文实例总结了Android文件读写操作.分享给大家供大家参考,具体如下: 在Android中的文件放在不同位置,它们的读取方式也有一些不同. 本文对android中对资源文件的读取.数据区文件的读取.SD卡文件的读取及RandomAccessFile的方式和方法进行了整理.供参考. 一.资源文件的读取: 1) 从resource的raw中读取文件数据: String res = ""; try{ //得到资源中的Raw数据流 InputStream in = getResources

  • Android持久化技术之文件的读取与写入实例详解

    本文实例分析了Android持久化技术之文件的读取与写入操作.分享给大家供大家参考,具体如下: 1.文件存储 (1)在Android的持久化技术中,文件存储是最基本的一种数据存储方式. (2)对存储的内容部做任何处理,原样存储到文件中. (3)Context提供了文件写入与读取的方法,openFileOutput:写入到文件:openFileInput:从文件中读取. (4)文件写入时模式有多种:比如是覆盖写入还是追加写入等. (5)写入的文件默认存储在/data/data/报名/files/目

  • Android编程之文件的读写实例详解

    本文实例分析了Android编程之文件的读写方法.分享给大家供大家参考,具体如下: Android的文件读写与JavaSE的文件读写相同,都是使用IO流.而且Android使用的正是JavaSE的IO流,下面我们通过一个练习来学习Android的文件读写. 1.创建一个Android工程 Project name:File     BuildTarget:Android2.2     Application name:文件读写     Package name:test.file     Cre

  • Android学习笔记-保存文件(Saving Files)

    Android设备有两种文件存储区域: 内部存储和外部存储 ("internal" and "external" storage). 这名字来自早期Android,那时大多数Android设备提供两种存储方式:内置的非易失的内存(内部存储)和可移动的存储例如micro SD卡(外部存储). 一些设备将永久内存分为内部和外部两部分,因此即使没有外部存储,依旧有两种存储空间.不管有没有外部存储,API的方法都是一样的. 如我的手机小米2S是16G大小的RAM,不支持SD

  • Android 读写文件方法汇总

    一. 从resource中的raw文件夹中获取文件并读取数据(资源文件只能读不能写) 复制代码 代码如下: String res = "";try{InputStream in = getResources().openRawResource(R.raw.bbi);//在\Test\res\raw\bbi.txt,int length = in.available();byte [] buffer = new byte[length];in.read(buffer);//res = E

  • Android中文件读写(输入流和输出流)操作小结

    1. Android中文件读写的原理: (1).所有文件的储存都是字节的储存. (2).在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘. (3).在读取文件(特别是文本文件)时,也是一个字节一个字节的读取以形成字节序列. 2. 字节流和字符流的区别: (1).字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,字符流就可以. (2).字节流转换成字符流可以用InputStreamReader,OutputStreamWriter. 一般我们在

  • Android编程中File文件常见存储与读取操作demo示例

    本文实例讲述了Android编程中File文件常见存储与读取操作.分享给大家供大家参考,具体如下: MainActivity文件代码如下: package example.com.myapplication; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; im

  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)

    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的 1.我的手机中power_profile.xml的内容: HTC t328w 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?><device name="Android">    <item name="none"&

  • Android第三方文件选择器aFileChooser使用方法详解

    aFileChooser是android平台上的一个第三方文件选择器,其在github上的项目主页是:https://github.com/iPaulPro/aFileChooser aFileChooser实现了在Android平台上高度可定制化的文件选择功能,aFileChooser在自己的项目代码中使用也比较简单. 写一个简单例子加以说明. (1) 首先要配置Androidmanifest.xml文件: <activity android:name="com.ipaulpro.afi

随机推荐