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 ...
随机推荐
- React-Native post和get请求
post: fetchData (title) { fetch(REQUEST_URL, { method: 'POST', headers: { 'Accept': 'application/jso ...
- oracle 11g R2安装报错ORA-00604及ORA-06553的原因及解决方法
10月31日PO主打算装oracle 11g R2,于是通过QQ旋风离线下载功能从oracle官网的链接下载了win32_11gR2_database_1of2.zip和win32_11gR2_dat ...
- win7系统64位plsql的设置
1. Instant Client Downloads for Microsoft Windows (32-bit) 我下载的是: instantclient-basic-win32-11.2.0.1 ...
- @init 自定义
相当于构造方法,有的时候初始化的时候有一些默认值,还有就是页面加载数据的时机问题,防止加载了页面再填数据 声明: -(instancetype)initWithName:(NSString *)aNa ...
- [Linked List]Insertion Sort List
Total Accepted: 59422 Total Submissions: 213019 Difficulty: Medium Sort a linked list using insertio ...
- Fragment之一:Fragment入门
参考自张泽华视频 Fragment是自Android3.0后引入的特性,主要用于在不同的屏幕尺寸中展现不同的内容. Fragment必须被嵌入Activity中使用,总是作为Activity的组成部分 ...
- ImportError: cannot import name webdriver问题解决
安装完selenium之后,发现根本无法使用,一运行代码,就报ImportError: cannot import name webdriver错误 于是各种FQ查找解决方法,查到方法如下: 在当前目 ...
- Python2.7 转义和正则匹配中文
今天爬虫(新浪微博 个人信息页面)的时候遇到了转义和正则匹配中文出乱码的问题. 先给出要匹配的部分网页源代码如下: <span class=\"pt_title S_txt2\&quo ...
- linux case 语句
#!/bin/bash #$ 表示脚本名 #$n 表示第n个参数(n>) in ") echo '--=> A' ;; ") echo '--=> B' ;; * ...
- Jquery基础之事件操作
事件是用户操作时页面或页面加载时引发的用来完成javascript和HTML之间的交互操作.常见的元素点击事件.鼠标事件.键盘输入事件等,较传Javascript 相比JQuery增加并扩展了基本的事 ...