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. SQL DCL数据控制语言,用来定义訪问权限和安全级别;

    DCL 1. 创建用户 * CREATE USER username@IP地址 IDENTIFIED BY 'password'; > 用户仅仅能在指定的IP地址上登录 * CREATE USE ...

  2. Qt开始学习的一些问题

    1.需要将qmake.moc和qvfb的路径加入到系统的环境变量: qmake.moc:export PATH=$PATH:/usr/local/Trolltech/QtEmbedded-4.6.1- ...

  3. JAX-RS开发 hello world

    1.建立maven webapp工程aty-rest. 2. 在pom文件增加spring框架.jax-rs接口.CXF实现 <dependency> <groupId>jav ...

  4. JDBC插入百万数据,不到5秒!

    java自带的批量操作,就可以很好的支持大量数据的处理.相比c#,简单很多.c#要使用oracle提供的ODP.NET,效率才很高,但是代码却很复杂.总之,在这方面,c#没得比.当然,这里的表是没加索 ...

  5. synchronized关键字的用法

    synchronized用于给方法或者块加锁用的,只有获得该对象或者块的锁的对象才能够执行里面的代码,否则将阻塞在那里,等待该锁被释放,然后获得该锁继续执行.比如下面模拟售票的代码: /** * 模拟 ...

  6. iOS 获取系统目录

    //获取根目录 NSString *homePath = NSHomeDirectory(); NSLog(@"Home目录:%@",homePath); //获取Document ...

  7. toj4119HDFS

    In HDFS( Hadoop Distributed File System), each data may have a lot of copies in case of data lose. T ...

  8. view import symbols

    nm -D [file]|grep -w U or objdump -T [file]|grep "*UND*"

  9. jquery操作session的方法

    jquery.session.js使用  //此方法在java中不能使用 // jquery.session.js 简单使用方法 添加数据    $.session.set('key', 'value ...

  10. Android进程

    android进程等级 1.前台进程 2.可视进程 3.服务进程 4.后台进程 5.空进程 让应用退出方式 finish();让应用成为空进程 Process.killProcess();杀进程 sy ...