android开发SDcard 响应的文件相关处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android开发SDcard 响应的文件相关处理相关的知识,希望对你有一定的参考价值。

android开发相关文件类的处理工具类:

  1 package com.gzcivil.utils;
  2 
  3 import java.io.File;
  4 import java.util.ArrayList;
  5 import java.util.List;
  6 
  7 import android.os.Environment;
  8 import android.os.StatFs;
  9 
 10 import com.gzcivil.entity.FileEntity;
 11 
 12 /**
 13  * SDcard 相关处理
 14  * 
 15  * @author LiJinlun
 16  * 
 17  */
 18 public class FileUtils {
 19 
 20     /**
 21      * 获取指定文件夹  所有文件
 22      * @param Path
 23      * @param Extension
 24      * @param IsIterative
 25      * @return
 26      */
 27     public static List<FileEntity> GetFiles(String Path, String Extension, boolean IsIterative) // 搜索目录,扩展名(判断的文件类型的后缀名),是否进入子文件夹
 28     {
 29         List<FileEntity> mlist = new ArrayList<FileEntity>();
 30         if (mlist != null && mlist.size() > 0)
 31             mlist.clear();
 32         File[] files = new File(Path).listFiles();
 33         if (files != null) {
 34             for (int i = 0; i < files.length; i++) {
 35                 File f = files[i];
 36                 if (f.isFile()) {
 37                     if (f.getPath().substring(f.getPath().length() - Extension.length()).equals(Extension)) // 判断扩展名
 38                     {
 39                         FileEntity fileEnt = new FileEntity();
 40                         fileEnt.setNewName(f.getName());
 41                         fileEnt.setFileSize(CommonUtil.FormetFileSize(f.length()));
 42                         fileEnt.setFilePath(f.getPath());
 43 
 44                         mlist.add(fileEnt);
 45                     }
 46                     if (!IsIterative)
 47                         break; // 如果不进入子集目录则跳出
 48                 } else if (f.isDirectory() && f.getPath().indexOf("/.") == -1) // 忽略点文件(隐藏文件/文件夹)
 49                     GetFiles(f.getPath(), Extension, IsIterative); // 这里就开始递归了
 50             }
 51 
 52         }
 53         return mlist;
 54     }
 55 
 56     /**
 57      * sdcard 是否存在
 58      * 
 59      * @return
 60      */
 61     public static boolean ExistSDCard() {
 62         if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
 63             return true;
 64         } else
 65             return false;
 66     }
 67 
 68     /**
 69      * sdcard 剩余空间
 70      * 
 71      * @return
 72      */
 73     public static long getSDFreeSize() {
 74         // 取得SD卡文件路径
 75         File path = Environment.getExternalStorageDirectory();
 76         StatFs sf = new StatFs(path.getPath());
 77         // 获取单个数据块的大小(Byte)
 78         @SuppressWarnings("deprecation")
 79         long blockSize = sf.getBlockSize();
 80         // 空闲的数据块的数量
 81         @SuppressWarnings("deprecation")
 82         long freeBlocks = sf.getAvailableBlocks();
 83         // 返回SD卡空闲大小
 84         // return freeBlocks * blockSize; //单位Byte
 85         // return (freeBlocks * blockSize)/1024; //单位KB
 86         return (freeBlocks * blockSize) / 1024 / 1024; // 单位MB
 87     }
 88 
 89     /**
 90      * sdcard 总容量
 91      * 
 92      * @return
 93      */
 94     public static long getSDAllSize() {
 95         // 取得SD卡文件路径
 96         File path = Environment.getExternalStorageDirectory();
 97         StatFs sf = new StatFs(path.getPath());
 98         // 获取单个数据块的大小(Byte)
 99         @SuppressWarnings("deprecation")
100         long blockSize = sf.getBlockSize();
101         // 获取所有数据块数
102         @SuppressWarnings("deprecation")
103         long allBlocks = sf.getBlockCount();
104         // 返回SD卡大小
105         // return allBlocks * blockSize; //单位Byte
106         // return (allBlocks * blockSize)/1024; //单位KB
107         return (allBlocks * blockSize) / 1024 / 1024; // 单位MB
108     }
109 
110     // 将SD卡文件夹里文件删除
111     public static void deleteFile(File file) {
112         if (file.exists()) {
113             if (file.isFile()) {
114                 return;
115             } else if (file.isDirectory()) {
116                 // 如果它是一个目录
117                 // 声明目录下所有的文件 files[];
118                 File files[] = file.listFiles();
119                 for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
120                     deleteFile(files[i]); // 把每个文件 用这个方法进行迭代
121                 }
122             }
123             file.delete();
124         }
125     }
126 
127     /**
128      * 删除单个文件
129      * 
130      * @param file
131      */
132     public static void deleteSingleFile(File file) {
133         if (file.exists()) {
134             if (file.isFile()) {
135                 file.delete();
136             }
137         }
138     }
139 }

 

以上是关于android开发SDcard 响应的文件相关处理的主要内容,如果未能解决你的问题,请参考以下文章

Android开发之内存管理

处理Android SDK 29及以上版本,读取不到/storage/emulated/0/(/storage/sdcard/)路径下文件问题

将 xml 文件从 sdcard 获取到 android 应用程序?

Android数据存储之Android 6.0运行时权限下文件存储的思考

链接应用程序以在文件管理器 Android 中处理文件格式

android清单文件在哪里打开