android开发SD卡工具类(一)

SD卡工具类整理:

  1 package com.gzcivil.utils;
  2
  3 import java.io.File;
  4 import java.io.FileInputStream;
  5 import java.io.FileNotFoundException;
  6 import java.io.FileOutputStream;
  7 import java.io.IOException;
  8 import java.io.InputStream;
  9 import java.io.OutputStream;
 10 import java.math.BigDecimal;
 11
 12 import android.os.Environment;
 13
 14 /**
 15  * SD卡工具类
 16  */
 17 public class SDTool {
 18     // 字节参考量(bt/KB/MB/GB/TB)
 19     protected final long SIZE_BT = 1024L;
 20     protected final long SIZE_KB = SIZE_BT * 1024L;
 21     protected final long SIZE_MB = SIZE_KB * 1024L;
 22     protected final long SIZE_GB = SIZE_MB * 1024L;
 23     protected final long SIZE_TB = SIZE_GB * 1024L;
 24     protected final int SACLE = 2;
 25
 26     private static SDTool mSDTool;
 27     private final String mModuleName = this.getClass().getSimpleName();
 28     private static boolean SDCardAvailable = false; // SDCard有效状态
 29     private static String SDCardRootDir = ""; // SDCard路径
 30
 31     private SDTool() {
 32         super();
 33         LogUtils.i(SysUtils.LOG_TAG, "创建文件夹");
 34         this.initSDTool();
 35     }
 36
 37     public static synchronized SDTool getInstance() {
 38         if (mSDTool == null)
 39             mSDTool = new SDTool();
 40         return mSDTool;
 41     }
 42
 43     // --------------------------get some dir path....
 44     public String getBaseDir() {
 45         return SDCardAvailable ? SDCardRootDir + SysConstants.PATH_ROOT : null;
 46     }
 47
 48     /** 获取图片sdcard保存路径 */
 49     public String getImgDir(String urlFileName) {
 50         if (SDCardAvailable)
 51             return SDCardRootDir + SysConstants.PATH_IMAGE + urlFileName;
 52         return null;
 53     }
 54
 55     /** 获取上传图片sdcard保存路径 */
 56     public String getUpImgDir(String urlFileName) {
 57         if (SDCardAvailable)
 58             return SDCardRootDir + SysConstants.PATH_UPIMAGE + urlFileName;
 59         return null;
 60     }
 61
 62     /** 获取sdcard临时目录的路径 */
 63     public String getTempBase() {
 64         if (SDCardAvailable)
 65             return SDCardRootDir + SysConstants.PATH_TEMP;
 66         return null;
 67     }
 68
 69     /** 获取sdcard下载目录的路径 */
 70     public String getDownloadBase() {
 71         if (SDCardAvailable)
 72             return SDCardRootDir + SysConstants.PATH_DOWNLOAD;
 73         return null;
 74     }
 75
 76     /** 获取sdcard数据库目录的路径 */
 77     public String getDataBase() {
 78         if (SDCardAvailable)
 79             return SDCardRootDir + SysConstants.PATH_DATABASE;
 80         return null;
 81     }
 82
 83     /** 获取文件在sdcard临时目录的保存路径 */
 84     public String getTempDir(String urlFileName) {
 85         if (SDCardAvailable)
 86             return SDCardRootDir + SysConstants.PATH_TEMP + urlFileName;
 87         return null;
 88     }
 89
 90     /** 获取文件在sdcard临时目录的保存路径 */
 91     public String getTempDirUpImage(String urlFileName) {
 92         if (SDCardAvailable)
 93             return SDCardRootDir + SysConstants.PATH_UPIMAGE;
 94         return null;
 95     }
 96
 97     /**
 98      * 根据SD卡相对路径返回绝对路径
 99      *
100      * @param filePath
101      * @return
102      */
103     public String getSdFullPath(String filePath) {
104         return SDCardRootDir + filePath;
105     }
106
107     // --------------------------public function....
108     /**
109      * SD卡可用状态检测
110      */
111     public static boolean isAvailable() {
112         return SDCardAvailable;
113     }
114
115     /**
116      * 检测文件是否存在
117      */
118     public boolean exists(String filePath) {
119         return SDCardAvailable ? new File(filePath).exists() : false;
120     }
121
122     /**
123      * 检测是否为零字节文件
124      */
125     public boolean emptyFile(String filePath) {
126         return (!SDCardAvailable || new File(filePath).length() < 1) ? true : false;
127     }
128
129     /**
130      * 根据文件名删除文件
131      *
132      * @param filePath
133      *            SDCard卡上完整路径
134      * @return void
135      */
136     public void deleteFile(String filePath) {
137         if (!SDCardAvailable || StringUtils.isEmpty(filePath))
138             return;
139         File file = new File(filePath);
140         if (file.exists())
141             file.delete();
142     }
143
144     /**
145      * 删除指定目录下所有文件及子目录(不包含自身)
146      *
147      * @param dirPath
148      * @return
149      * @return void
150      */
151     public synchronized boolean deleteDir(String dirPath) {
152         boolean clearFlag = false;
153         if (!SDCardAvailable) {
154             return false;
155         }
156
157         File file = new File(dirPath);
158         if (file.exists() && file.isDirectory()) {
159             File[] files = file.listFiles();
160             for (File fileItem : files) {
161                 if (fileItem.isFile()) {
162                     fileItem.delete();
163                 }
164             }
165             clearFlag = true;
166         }
167         return clearFlag;
168     }
169
170     /**
171      * 获取指定目录大小
172      *
173      * @param dirPath
174      * @return
175      */
176     public long getPathSize(String dirPath) {
177         long size = 0;
178         if (!SDCardAvailable)
179             return size;
180
181         File file = new File(dirPath);
182         if (file.exists() && file.isDirectory()) {
183             File[] files = file.listFiles();
184             for (File fileItem : files) {
185                 if (fileItem.isFile()) {
186                     size += fileItem.length();
187                 }
188             }
189         }
190         return size;
191     }
192
193     /**
194      * 读取SD卡中文本文件
195      *
196      * @param fileName
197      * @return
198      */
199
200     public String readSDFile(String fileName) {
201         StringBuffer sb = new StringBuffer();
202         try {
203             File file = new File(fileName);
204             FileInputStream fis = new FileInputStream(file);
205             int c;
206             while ((c = fis.read()) != -1) {
207                 sb.append((char) c);
208             }
209             fis.close();
210         } catch (FileNotFoundException e) {
211             e.printStackTrace();
212         } catch (IOException e) {
213             e.printStackTrace();
214         } catch (Exception e) {
215             e.printStackTrace();
216         }
217         return sb.toString();
218     }
219
220     /**
221      * 获取指定目录大小-格式化好字串
222      *
223      * @param dirPath
224      * @return
225      */
226     public String sizeFormatString(long size) {
227         String sizeFormat = "";
228         if (size >= 0 && size < SIZE_BT) {
229             sizeFormat = size + " Byte";
230         } else if (size >= SIZE_BT && size < SIZE_KB) {
231             sizeFormat = size / SIZE_BT + " KB";
232         } else if (size >= SIZE_KB && size < SIZE_MB) {
233             sizeFormat = size / SIZE_KB + " MB";
234         } else if (size >= SIZE_MB && size < SIZE_GB) {
235             BigDecimal longs = new BigDecimal(Double.valueOf(size + "").toString());
236             BigDecimal sizeMB = new BigDecimal(Double.valueOf(SIZE_MB + "").toString());
237             String result = longs.divide(sizeMB, SACLE, BigDecimal.ROUND_HALF_UP).toString();
238             // double result=size/(double)SIZE_MB;
239             sizeFormat = result + " GB";
240         } else {
241             BigDecimal longs = new BigDecimal(Double.valueOf(size + "").toString());
242             BigDecimal sizeMB = new BigDecimal(Double.valueOf(SIZE_GB + "").toString());
243             String result = longs.divide(sizeMB, SACLE, BigDecimal.ROUND_HALF_UP).toString();
244             sizeFormat = result + " TB";
245         }
246         return sizeFormat;
247     }
248
249     /**
250      * 文件拷贝
251      *
252      * @param fromFile
253      * @param toFile
254      * @return
255      */
256     public boolean CopySdcardFile(String fromFile, String toFile) {
257         boolean copyState = false;
258         try {
259             InputStream fosfrom = new FileInputStream(fromFile);
260             OutputStream fosto = new FileOutputStream(toFile);
261             byte bt[] = new byte[1024];
262             int c;
263             while ((c = fosfrom.read(bt)) > 0) {
264                 fosto.write(bt, 0, c);
265             }
266             fosfrom.close();
267             fosto.close();
268             copyState = true;
269         } catch (Exception ex) {
270             LogUtils.e(SysUtils.LOG_TAG, "CopySdcardFile Exception: fromFile=" + fromFile + " toFile=" + toFile + " 复制失败.", this.mModuleName);
271         }
272         return copyState;
273     }
274
275     // ==============================================
276     protected String getMd5(String urlName) {
277         return StringUtils.md5(urlName.getBytes());
278     }
279
280     @SuppressWarnings("static-access")
281     private void initSDTool() {
282         if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
283             return;
284         }
285         SDCardAvailable = true;
286         SDCardRootDir = Environment.getExternalStorageDirectory().getPath();
287
288         this.initSDDir(SDCardRootDir + SysConstants.PATH_ROOT);
289         this.initSDDir(SDCardRootDir + SysConstants.PATH_IMAGE);
290         this.initSDDir(SDCardRootDir + SysConstants.PATH_DATABASE);
291         this.initSDDir(SDCardRootDir + SysConstants.PATH_DOWNLOAD);
292         this.initSDDir(SDCardRootDir + SysConstants.PATH_TEMP);
293         this.initSDDir(SDCardRootDir + SysConstants.PATH_UPIMAGE);
294     }
295
296     /**
297      * 获取SDCard根路径
298      */
299     public static String getSDCardRootDir() {
300         return SDCardRootDir;
301     }
302
303     public static boolean initSDDir(String dirPath) {
304         boolean flag = false;
305         if (SDCardAvailable) {
306             File tempFile = new File(dirPath);
307             if (!tempFile.exists()) {
308                 if (tempFile.mkdirs()) {
309                     flag = true;
310                     LogUtils.v(SysUtils.LOG_TAG, "tempFile=" + dirPath + " mkdir success!");
311                 }
312             } else {
313                 flag = true;
314                 LogUtils.v(SysUtils.LOG_TAG, "tempFile=" + dirPath + " is exist!");
315             }
316         }
317         return flag;
318     }
319
320 }
时间: 2024-10-21 19:53:20

android开发SD卡工具类(一)的相关文章

Android开发调试日志工具类[支持保存到SD卡]

直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.net.UnknownHostException; import java.text.SimpleDateFormat; impor

wemall app商城源码android开发MD5加密工具类

wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供技术员参考学习. package com.gzcivil.utils; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgori

Android开发实现HttpClient工具类

在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务.你可以把HttpClient想象成一个浏览器,通过它的API我们可以很方便的发出GET,POST请求(当然它的功能远不止这些). 比如你只需以下几行代码就能发出一个简单的GET请求并打印响应结果: try {         // 创建一个默认的HttpClient         HttpClient httpclient =

android开发,http工具类

android的HttpClient实现简单的get和post请求 [1].[代码] [Java]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66

android开发MD5加密工具类(一)

MD5加密工具类整理: 1 package com.gzcivil.utils; 2 3 import java.io.UnsupportedEncodingException; 4 import java.security.MessageDigest; 5 import java.security.NoSuchAlgorithmException; 6 7 public class MD5Tool { 8 9 public static String md5(String string) {

Android设备内存和SD卡操作工具类

package cc.c; import java.io.File; import java.util.List; import android.os.StatFs; import java.io.FileReader; import java.io.IOException; import java.io.BufferedReader; import android.os.Environment; import android.content.Context; import android.ap

ANDROID开发实用小工具

分享一些 Android开发中的实用小工具,你有发现好工具吗? 来这里分享一下呗 一.find bugs 静态检查工具 http://findbugs.sourceforge.net/ FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析 详情请参考:http://baike.baidu.com/view/2367937.htm 二.内测宝 - 测试分发管理平台 国内功能最完

android 往sd卡中写入文件

在调用前需要判断是否有写入权限 Environment类提供了比较丰富的方法 static File getDataDirectory() 获得android data的目录. static File getDownloadCacheDirectory() 获得下载缓存目录. static File getExternalStorageDirectory() 或者外部存储媒体目录. static File getExternalStoragePublicDirectory(String type

Android开源项目大全 - 工具类

主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少View.服务.资源简化初始化,事件绑定等重复繁琐工作 AndroidAnnotations(Code Diet)android快速开发框架 项目地址:https://github.com/excilys/androidannotations 文档介绍:https://github.com/excilys