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 }
时间: 2024-11-07 05:02:16

android开发SDcard 响应的文件相关处理(一)的相关文章

Android 开发事件响应之基于监听的事件响应

Android 开发事件响应之基于监听的事件响应 本文将介绍Android 操作系统如何通过监听来实现对事件的响应. Android 开发事件响应之基于监听的事件响应 背景介绍 Android 开发事件响应类型 内部类 匿名内部类 外部类 直接绑定标签 总结 背景介绍 对于任何可视化开发来说,都会涉及到对控件的响应.我们通过举例:实现对Button 按钮的点击来讲解Android 里面对事件相应的办法. Android 开发事件响应类型 在Android 开发中,有两种方式可以对事件作出响应,分

Android开发问题之R文件丢失

问题解析:1.有时候我们打开Android工程时,会发现gen文件夹下的R文件丢失了,这种情况的发生一般是发在在导入其他Android工程之后,原因是sdk版本问题:2.如果工程已经在eclipse软件中,可能是xml文件错误导致的. 解决方法:1.找到菜单栏中“项目”(project)选项下的“清理”(clean),然后在弹出的对话框中选择你要清理的工程:2.如果没有效果,可以选中项目名称,右击选择“源代码”->“清理”,确定完成.虽然两者都是清理操作,但感觉效果是不一样的:3.如果还是没有出

android开发积累_1)获取文件、文件夹存储空间和Toast的人性化使用

记录一下平时经常需要运用到得文件相关内容,俗话讲好记性不如烂笔头!   1) <strong>/** * 根据路径获得,某个文件或文件夹所在的存储器的内存空间总大小 * * @return */ public static long getTotalMemorySize(String path) { StatFs stat = new StatFs(path); long blockSize = stat.getBlockSize(); // 每个block 占字节数 long totalBl

Android开发手记(21) 遍历文件夹

我们在遍历文件夹的时候由于涉及到SD卡相关操作,所以我们需要添加如下权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 首先,需要检查SD卡挂载状态: boolean sdCard

android 开发-数据存储之文件存储

android的文件存储是通过android的文件系统对数据进行临时的保存操作,并不是持久化数据,例如网络上下载某些图片.音频.视频文件等.如缓存文件将会在清理应用缓存的时候被清除,或者是应用卸载的时候缓存文件或内部文件将会被清除. 以下是开发学习中所写的示例代码,以供日后查阅: xml: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="

Android开发,布局xml文件命名注意事项——不能包含任何大写字母

转自:http://blog.sina.com.cn/s/blog_628b45090100zuit.html 在开发Android应用时,会接触到布局文件,一般在 工程名/res/layout/*.xml 目录下,这与网页开发时使用css控制布局类似,主要目的是使布局与程序代码分开,便于布局的修改以及控制. 如果使用eclipse平台开发,每一个Android项目,都会有一个R.java文件,该文件用于标识所有的资源,当资源文件(一般是位于res目录的下的*.xml文件)被修改了,R.java

Android开发中对.gitignore文件的配置

一.配置 .gitignore的原因 被加进“.gitignore”的表示不会被Git跟踪,在实际开发过程中,有很多因素导致有些文件不应该加入版本控制中,如: 不同的电脑,开发软件的版本不同,以及软件的一些配置不同,还有编译生成的文件等等--并且在开发过程中会遇到很多冲突,因此就需要对“.gitignore"文件进行好好的配置. 二. .gitignore语法 首先说明“.gitignore"文件的语法:(详情请查询官方文档) 1. 用#来注释语句,在#后面的内容会被Git忽略 2.

android开发中,apk文件安装到\system\app 的解决办法 仅限root机

在 Android 中,如果要使用系统限制的权限(比如 android.permission.WRITE_SECURE_SETTINGS),我们需要把程序安装到 /system/app/ 下. 下面以 SecureSetting.apk 为例,演示这个操作.需要准备一台已经获得 Root 权限的手机. 1.通过 USB 连接手机和电脑. 2.使用 adb 控制手机. 源码打印?    1. $ adb push SecureSetting.apk /sdcard/  // 上传要安装的文件,为安

android开发环境之SDK文件夹下的所需内容

下面SDK的内容可以到网址 https://www.androiddevtools.cn/下载相应包 注意:下载包的版本要一致,不然会出错 Sdk至少包含如下文件: add-ones夹可以为空: build-tools文件夹里要有东西,比如本人下的是: platforms文件夹要有内容,比如本人下的是: platform-tools文件夹要有内容,如下: sources文件夹里也有东西,比如自己下的: system-images文件夹有东西这些是CPU/ABI镜像文件,比如: tools文件夹就