Android读取手机根目录文件即本地SD卡

前言转载的http://blog.csdn.net/junzia/article/details/41649063#insertcode 有需要所以学习了一下关于读取本地文件目录的知识,自己也仿照着写了个。哈哈,初学花了不少时间,感谢原文博客的分享!不废话见图。 大家如果有学习需要可以去我GitHub下载,下载的兄弟给我右上角随手一个Star如何,感谢感谢。地址https://github
摘要由CSDN通过智能技术生成

前言

有需要所以学习了一下关于读取本地文件目录的知识,自己也仿照着写了个。哈哈,初学花了不少时间,感谢原文博客的分享!不废话见图。这里写图片描述
大家如果有学习需要可以去我GitHub下载,下载的兄弟给我右上角随手一个Star如何,感谢感谢。地址https://github.com/jianhaojiang/TestApp

下面是研究内容

效果图:



  1. package wuwang.tools.utils;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileNotFoundException;  
  6. import java.io.IOException;  
  7. import java.text.DecimalFormat;  
  8. import java.util.ArrayList;  
  9. import java.util.Comparator;  
  10. import java.util.HashMap;  
  11. import java.util.List;  
  12. import java.util.Map;  
  13.   
  14. import android.os.Environment;  
  15.   
  16.   
  17. /** 
  18.  * 用于获取手机的文件夹及文件的工具类,如果权限允许,可以获取手机上任意路径的文件列表 
  19.  * GetFilesUtils使用的是懒汉式单例模式,线程安全 
  20.  *@author wuwang 
  21.  *@since 2014.11 
  22.  */  
  23. public class GetFilesUtils {  
  24.       
  25.     public static final String FILE_TYPE_FOLDER=“wFl2d”;  
  26.       
  27.     public static final String FILE_INFO_NAME=“fName”;  
  28.     public static final String FILE_INFO_ISFOLDER=“fIsDir”;  
  29.     public static final String FILE_INFO_TYPE=“fFileType”;  
  30.     public static final String FILE_INFO_NUM_SONDIRS=“fSonDirs”;  
  31.     public static final String FILE_INFO_NUM_SONFILES=“fSonFiles”;  
  32.     public static final String FILE_INFO_PATH=“fPath”;  
  33.       
  34.     private static GetFilesUtils gfu;  
  35.       
  36.     private GetFilesUtils(){  
  37.           
  38.     }  
  39.       
  40.     /** 
  41.      * 获取GetFilesUtils实例 
  42.      * @return GetFilesUtils 
  43.      **/  
  44.     public static synchronized GetFilesUtils getInstance(){  
  45.         if(gfu==null){  
  46.             gfu=new GetFilesUtils();  
  47.         }  
  48.         return gfu;  
  49.     }  
  50.       
  51.     /** 
  52.      * 获取文件path文件夹下的文件列表 
  53.      * @see #getSonNode(String) 
  54.      * @param path 手机上的文件夹 
  55.      * @return path文件夹下的文件列表的信息,信息存储在Map中,Map的key的列表如下:<br /> 
  56.      *         FILE_INFO_NAME : String 文件名称 <br /> 
  57.      *         FILE_INFO_ISFOLDER: boolean 是否为文件夹   <br /> 
  58.      *         FILE_INFO_TYPE: string 文件的后缀 <br /> 
  59.      *         FILE_INFO_NUM_SONDIRS : int 子文件夹个数   <br /> 
  60.      *         FILE_INFO_NUM_SONFILES: int 子文件个数    <br /> 
  61.      *         FILE_INFO_PATH : String 文件的绝对路径  <br /> 
  62.      **/  
  63.     public List<Map<String, Object>> getSonNode(File path){  
  64.         if(path.isDirectory()){  
  65.             List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();  
  66.             File[] files=path.listFiles();  
  67.             if(files!=null){  
  68.   
  69.                 for(int i=0;i<files.length;i++){  
  70.                     Map<String, Object> fileInfo=new HashMap<String, Object>();  
  71.                     fileInfo.put(FILE_INFO_NAME, files[i].getName());  
  72.                     if(files[i].isDirectory()){  
  73.                         fileInfo.put(FILE_INFO_ISFOLDER, true);  
  74.                         File[] bFiles=files[i].listFiles();  
  75.                         if(bFiles==null){  
  76.                             fileInfo.put(FILE_INFO_NUM_SONDIRS, 0);  
  77.                             fileInfo.put(FILE_INFO_NUM_SONFILES, 0);  
  78.                         }else{  
  79.                             int getNumOfDir=0;  
  80.                             for(int j=0;j<bFiles.length;j++){  
  81.                                 if(bFiles[j].isDirectory()){  
  82.                                     getNumOfDir++;  
  83.                                 }  
  84.                             }  
  85.                             fileInfo.put(FILE_INFO_NUM_SONDIRS, getNumOfDir);  
  86.                             fileInfo.put(FILE_INFO_NUM_SONFILES, bFiles.length-getNumOfDir);  
  87.                         }  
  88.                         fileInfo.put(FILE_INFO_TYPE, FILE_TYPE_FOLDER);  
  89.                     }else{  
  90.                         fileInfo.put(FILE_INFO_ISFOLDER, false);  
  91.                         fileInfo.put(FILE_INFO_NUM_SONDIRS, 0);  
  92.                         fileInfo.put(FILE_INFO_NUM_SONFILES, 0);  
  93.                         fileInfo.put(FILE_INFO_TYPE, getFileType(files[i].getName()));  
  94.                     }  
  95.                     fileInfo.put(FILE_INFO_PATH, files[i].getAbsoluteFile());  
  96.                     list.add(fileInfo);  
  97.                 }  
  98.                 return list;  
  99.             }else{  
  100.                 return null;  
  101.             }  
  102.         }else{  
  103.             return null;  
  104.         }  
  105.     }  
  106.     /** 
  107.      * 获取文件pathStr文件夹下的文件列表 
  108.      * @see #getSonNode(File) 
  109.      * @param pathStr 手机上的文件夹的绝对路径 
  110.      * @return pathStr文件夹下的文件列表的信息,信息存储在Map中,Map的key的列表如下:<br /> 
  111.      *         FILE_INFO_NAME : String 文件名称 <br /> 
  112.      *         FILE_INFO_ISFOLDER: boolean 是否为文件夹   <br /> 
  113.      *         FILE_INFO_TYPE: string 文件的后缀 <br /> 
  114.      *         FILE_INFO_NUM_SONDIRS : int 子文件夹个数   <br /> 
  115.      *         FILE_INFO_NUM_SONFILES: int 子文件个数    <br /> 
  116.      *         FILE_INFO_PATH : String 文件的绝对路径  <br /> 
  117.      **/  
  118.     public List<Map<String, Object>> getSonNode(String pathStr){  
  119.         File path=new File(pathStr);  
  120.         return getSonNode(path);  
  121.     }  
  122.       
  123.     /** 
  124.      * 获取文件path文件或文件夹的兄弟节点文件列表 
  125.      * @see #getBrotherNode(String) 
  126.      * @param path 手机上的文件夹 
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值