android开发SD卡工具类(一)
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卡工具类(一)的更多相关文章
- Android开发调试日志工具类[支持保存到SD卡]
直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.i ...
- wemall app商城源码android开发MD5加密工具类
wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供 ...
- Android——SD卡工具类——SDCardUtils.java
package com.xdsjs.save.utils; /** * SD卡相关的辅助类 * Created by xdsjs on 2015/10/13. */ import java.io.Fi ...
- Android开发实现HttpClient工具类
在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务.你可以把HttpClient想 ...
- android开发MD5加密工具类(一)
MD5加密工具类整理: package com.gzcivil.utils; import java.io.UnsupportedEncodingException; import java.secu ...
- Android 检测SD卡应用
Android 检测SD卡应用 // Environment.MEDIA_MOUNTED // sd卡在手机上正常使用状态 // ...
- Android 中替代 sharedpreferences 工具类的实现
Android 中替代 sharedpreferences 工具类的实现 背景 想必大家一定用过 sharedpreferences 吧!就我个人而言,特别讨厌每次 put 完数据还要 commit. ...
- android 向SD卡写入数据
原文:android 向SD卡写入数据 1.代码: /** * 向sdcard中写入文件 * @param filename 文件名 * @param content 文件内容 */ public v ...
- Android开源项目大全 - 工具类
主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...
随机推荐
- nth-child和nth-of-type的区别
以前一般都用:nth-child,后来知道了:nth-of-type,然后就一般用nth-of-type 它们两有什么区别呢? 首先来看个现象: 假如有这样一个HTML结构 <div class ...
- .NET 下成熟开源的BPM产品四款推荐
.net下的BPM产品相比JAVA的确实不多,这里主要提4款. 1.博客园.github.codeplex上的开源的流程组件AppInOne BPM,目前已有不少的企业开始使用. 优点:产品框架较全面 ...
- Integer to Roman(JAVA)
public String intToRoman(int num) { int[] values={1000,900,500,400,100,90,50,40,10,9,5,4,1}; String[ ...
- html 基础之 <link>标签
实例 链接一个外部样式表: <head> <link rel="stylesheet" type="text/css" href=" ...
- Spring中注解的使用详解
一:@Rsource注解的使用规则 1.1.案例演示 Spring的主配置文件:applicationContext.xml(因为我这里将会讲到很多模块,所以我用一个主配置文件去加载各个模块的配置文件 ...
- Git 添加空文件夹的方法
转自stackoverflow: http://stackoverflow.com/questions/115983/how-do-i-add-an-empty-directory-to-a-git- ...
- wampserver 自定义站点
wampserver配置多站点,安装完wampserver后,我们要做的肯定是很多项目,那么如何配置wampserver多站点呢. 在“httpd.conf”文件中查找:Include conf/ex ...
- centos出现磁盘坏掉,怎么修复和检测。
当dmesg的时候,出现下面的信息说明磁盘有问题 Info fld=0x139066d0 end_request: I/O error, dev sda, sector 328230608 Buffe ...
- 验证角谷猜想(hd1279)
验证角谷猜想 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- nginx相关参考博客
http://tengine.taobao.org/book/ http://blog.sina.com.cn/s/articlelist_1929617884_0_1.html http://blo ...