SD卡工具类整理:

 package com.gzcivil.utils;

 import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal; import android.os.Environment; /**
* SD卡工具类
*/
public class SDTool {
// 字节参考量(bt/KB/MB/GB/TB)
protected final long SIZE_BT = 1024L;
protected final long SIZE_KB = SIZE_BT * 1024L;
protected final long SIZE_MB = SIZE_KB * 1024L;
protected final long SIZE_GB = SIZE_MB * 1024L;
protected final long SIZE_TB = SIZE_GB * 1024L;
protected final int SACLE = 2; private static SDTool mSDTool;
private final String mModuleName = this.getClass().getSimpleName();
private static boolean SDCardAvailable = false; // SDCard有效状态
private static String SDCardRootDir = ""; // SDCard路径 private SDTool() {
super();
LogUtils.i(SysUtils.LOG_TAG, "创建文件夹");
this.initSDTool();
} public static synchronized SDTool getInstance() {
if (mSDTool == null)
mSDTool = new SDTool();
return mSDTool;
} // --------------------------get some dir path....
public String getBaseDir() {
return SDCardAvailable ? SDCardRootDir + SysConstants.PATH_ROOT : null;
} /** 获取图片sdcard保存路径 */
public String getImgDir(String urlFileName) {
if (SDCardAvailable)
return SDCardRootDir + SysConstants.PATH_IMAGE + urlFileName;
return null;
} /** 获取上传图片sdcard保存路径 */
public String getUpImgDir(String urlFileName) {
if (SDCardAvailable)
return SDCardRootDir + SysConstants.PATH_UPIMAGE + urlFileName;
return null;
} /** 获取sdcard临时目录的路径 */
public String getTempBase() {
if (SDCardAvailable)
return SDCardRootDir + SysConstants.PATH_TEMP;
return null;
} /** 获取sdcard下载目录的路径 */
public String getDownloadBase() {
if (SDCardAvailable)
return SDCardRootDir + SysConstants.PATH_DOWNLOAD;
return null;
} /** 获取sdcard数据库目录的路径 */
public String getDataBase() {
if (SDCardAvailable)
return SDCardRootDir + SysConstants.PATH_DATABASE;
return null;
} /** 获取文件在sdcard临时目录的保存路径 */
public String getTempDir(String urlFileName) {
if (SDCardAvailable)
return SDCardRootDir + SysConstants.PATH_TEMP + urlFileName;
return null;
} /** 获取文件在sdcard临时目录的保存路径 */
public String getTempDirUpImage(String urlFileName) {
if (SDCardAvailable)
return SDCardRootDir + SysConstants.PATH_UPIMAGE;
return null;
} /**
* 根据SD卡相对路径返回绝对路径
*
* @param filePath
* @return
*/
public String getSdFullPath(String filePath) {
return SDCardRootDir + filePath;
} // --------------------------public function....
/**
* SD卡可用状态检测
*/
public static boolean isAvailable() {
return SDCardAvailable;
} /**
* 检测文件是否存在
*/
public boolean exists(String filePath) {
return SDCardAvailable ? new File(filePath).exists() : false;
} /**
* 检测是否为零字节文件
*/
public boolean emptyFile(String filePath) {
return (!SDCardAvailable || new File(filePath).length() < 1) ? true : false;
} /**
* 根据文件名删除文件
*
* @param filePath
* SDCard卡上完整路径
* @return void
*/
public void deleteFile(String filePath) {
if (!SDCardAvailable || StringUtils.isEmpty(filePath))
return;
File file = new File(filePath);
if (file.exists())
file.delete();
} /**
* 删除指定目录下所有文件及子目录(不包含自身)
*
* @param dirPath
* @return
* @return void
*/
public synchronized boolean deleteDir(String dirPath) {
boolean clearFlag = false;
if (!SDCardAvailable) {
return false;
} File file = new File(dirPath);
if (file.exists() && file.isDirectory()) {
File[] files = file.listFiles();
for (File fileItem : files) {
if (fileItem.isFile()) {
fileItem.delete();
}
}
clearFlag = true;
}
return clearFlag;
} /**
* 获取指定目录大小
*
* @param dirPath
* @return
*/
public long getPathSize(String dirPath) {
long size = 0;
if (!SDCardAvailable)
return size; File file = new File(dirPath);
if (file.exists() && file.isDirectory()) {
File[] files = file.listFiles();
for (File fileItem : files) {
if (fileItem.isFile()) {
size += fileItem.length();
}
}
}
return size;
} /**
* 读取SD卡中文本文件
*
* @param fileName
* @return
*/ public String readSDFile(String fileName) {
StringBuffer sb = new StringBuffer();
try {
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
int c;
while ((c = fis.read()) != -1) {
sb.append((char) c);
}
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
} /**
* 获取指定目录大小-格式化好字串
*
* @param dirPath
* @return
*/
public String sizeFormatString(long size) {
String sizeFormat = "";
if (size >= 0 && size < SIZE_BT) {
sizeFormat = size + " Byte";
} else if (size >= SIZE_BT && size < SIZE_KB) {
sizeFormat = size / SIZE_BT + " KB";
} else if (size >= SIZE_KB && size < SIZE_MB) {
sizeFormat = size / SIZE_KB + " MB";
} else if (size >= SIZE_MB && size < SIZE_GB) {
BigDecimal longs = new BigDecimal(Double.valueOf(size + "").toString());
BigDecimal sizeMB = new BigDecimal(Double.valueOf(SIZE_MB + "").toString());
String result = longs.divide(sizeMB, SACLE, BigDecimal.ROUND_HALF_UP).toString();
// double result=size/(double)SIZE_MB;
sizeFormat = result + " GB";
} else {
BigDecimal longs = new BigDecimal(Double.valueOf(size + "").toString());
BigDecimal sizeMB = new BigDecimal(Double.valueOf(SIZE_GB + "").toString());
String result = longs.divide(sizeMB, SACLE, BigDecimal.ROUND_HALF_UP).toString();
sizeFormat = result + " TB";
}
return sizeFormat;
} /**
* 文件拷贝
*
* @param fromFile
* @param toFile
* @return
*/
public boolean CopySdcardFile(String fromFile, String toFile) {
boolean copyState = false;
try {
InputStream fosfrom = new FileInputStream(fromFile);
OutputStream fosto = new FileOutputStream(toFile);
byte bt[] = new byte[1024];
int c;
while ((c = fosfrom.read(bt)) > 0) {
fosto.write(bt, 0, c);
}
fosfrom.close();
fosto.close();
copyState = true;
} catch (Exception ex) {
LogUtils.e(SysUtils.LOG_TAG, "CopySdcardFile Exception: fromFile=" + fromFile + " toFile=" + toFile + " 复制失败.", this.mModuleName);
}
return copyState;
} // ==============================================
protected String getMd5(String urlName) {
return StringUtils.md5(urlName.getBytes());
} @SuppressWarnings("static-access")
private void initSDTool() {
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
return;
}
SDCardAvailable = true;
SDCardRootDir = Environment.getExternalStorageDirectory().getPath(); this.initSDDir(SDCardRootDir + SysConstants.PATH_ROOT);
this.initSDDir(SDCardRootDir + SysConstants.PATH_IMAGE);
this.initSDDir(SDCardRootDir + SysConstants.PATH_DATABASE);
this.initSDDir(SDCardRootDir + SysConstants.PATH_DOWNLOAD);
this.initSDDir(SDCardRootDir + SysConstants.PATH_TEMP);
this.initSDDir(SDCardRootDir + SysConstants.PATH_UPIMAGE);
} /**
* 获取SDCard根路径
*/
public static String getSDCardRootDir() {
return SDCardRootDir;
} public static boolean initSDDir(String dirPath) {
boolean flag = false;
if (SDCardAvailable) {
File tempFile = new File(dirPath);
if (!tempFile.exists()) {
if (tempFile.mkdirs()) {
flag = true;
LogUtils.v(SysUtils.LOG_TAG, "tempFile=" + dirPath + " mkdir success!");
}
} else {
flag = true;
LogUtils.v(SysUtils.LOG_TAG, "tempFile=" + dirPath + " is exist!");
}
}
return flag;
} }

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

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

    直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.i ...

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

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供 ...

  3. Android——SD卡工具类——SDCardUtils.java

    package com.xdsjs.save.utils; /** * SD卡相关的辅助类 * Created by xdsjs on 2015/10/13. */ import java.io.Fi ...

  4. Android开发实现HttpClient工具类

    在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务.你可以把HttpClient想 ...

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

    MD5加密工具类整理: package com.gzcivil.utils; import java.io.UnsupportedEncodingException; import java.secu ...

  6. Android 检测SD卡应用

    Android 检测SD卡应用 //                                    Environment.MEDIA_MOUNTED // sd卡在手机上正常使用状态  // ...

  7. Android 中替代 sharedpreferences 工具类的实现

    Android 中替代 sharedpreferences 工具类的实现 背景 想必大家一定用过 sharedpreferences 吧!就我个人而言,特别讨厌每次 put 完数据还要 commit. ...

  8. android 向SD卡写入数据

    原文:android 向SD卡写入数据 1.代码: /** * 向sdcard中写入文件 * @param filename 文件名 * @param content 文件内容 */ public v ...

  9. Android开源项目大全 - 工具类

    主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...

随机推荐

  1. 在unity的scene中画五角星

    使用Gizmos的DrawLine方法画线. 首先在场景中找到五角星的五个定点的坐标,按照一笔画的顺序命名为1,2,3,4,5,如图所示: 接下来就是编写代码了,代码很少,如下所示: using Un ...

  2. C#中“@”的作用和用法

    “@”在看别人程序的时候偶尔看到,总结了一下两个用途 1. 不常用,也不推介用的用法. @关键字 可以作为标识符来使用,说白了,就是讲关键字变成非关键字. 2.逐字字符串字面量,以@开头,后面是由引导 ...

  3. AppSettings

    1.winform中读写配置文件appSettings 一节中的配置. #region 读写配置文件 /// <summary> /// 修改配置文件中某项的值 /// </summ ...

  4. 使用SignalR和SQLTableDependency跟踪数据库中记录的变动

    原文地址:查看 SqlTableDependency是一个组件用来接收数据库的通知,包含在数据表上该记录的值的Inserted.Deleted或者Update操作. 备注:原文提供示例代码下载,但是j ...

  5. Java IO之序列化

    序列化机制是Java语言内建的一种对象持久化方式,可以很容易的在JVM中的活动对象和字节数组之间转换.它的一个重要用途就是远程方法调用的时候,用来对开发人员屏蔽底层实现细节(远端的开发人员不知道这个对 ...

  6. select语句后面加上for update的作用

    Select…For Update语句的语法与select语句相同,只是在select语句的后面加FOR UPDATE [NOWAIT]子句. 该语句用来锁定特定的行(如果有where子句,就是满足w ...

  7. Linux下,命令 wget 的使用

    wget是一个从网络上自动下载文件的自由工具.它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理.  所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行.这意味这你可以登录系统, ...

  8. Python网页信息采集:使用PhantomJS采集淘宝天猫商品内容

    1,引言 最近一直在看Scrapy 爬虫框架,并尝试使用Scrapy框架写一个可以实现网页信息采集的简单的小程序.尝试过程中遇到了很多小问题,希望大家多多指教. 本文主要介绍如何使用Scrapy结合P ...

  9. first blood暴力搜索,剪枝是关键

    First Blood 题目描述 盖伦是个小学一年级的学生,在一次数学课的时候,老师给他们出了一个难题: 老师给了一个正整数 n,需要在不大于n的范围内选择三个正整数(可以是相同的),使它们三个的最小 ...

  10. java学习:AWT组件和事件处理的笔记(1)--文本框上的ActionEvent事件

    学习处理事件时,必须很好的掌握事件源,监视器,处理事件的接口    1.事件源        能够产生java认可事件的对象都可称为事件源,也就是说事件源必须是对象    2.监视器        监 ...