博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android开发SD卡工具类(一)
阅读量:5037 次
发布时间:2019-06-12

本文共 10232 字,大约阅读时间需要 34 分钟。

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 filePath101      * @return102      */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 filePath133      *            SDCard卡上完整路径134      * @return void135      */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 dirPath148      * @return149      * @return void150      */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 dirPath174      * @return175      */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 fileName197      * @return198      */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 dirPath224      * @return225      */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 fromFile253      * @param toFile254      * @return255      */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 }

 

转载于:https://www.cnblogs.com/lijinlun0825/p/5174757.html

你可能感兴趣的文章
java学习之switch 等值判断
查看>>
hdu5036 Explosion 传递闭包
查看>>
WinXP下由于图标造成的System.Windows.Markup.XamlParseException
查看>>
js中ajax返回数据
查看>>
SQL execution plan
查看>>
maven settings.xml windows
查看>>
递归与二叉树_中序和后序重建二叉树
查看>>
C#winform的textbox怎么设置滚动条
查看>>
TensorFlow基础9——tensorboard显示网络结构
查看>>
HDU 1232 畅通工程 并查集
查看>>
linux下使用sftp【转】
查看>>
使用redis-cli定时执行指定命令
查看>>
Moresec
查看>>
《Effective Java》—— 创建与销毁对象
查看>>
UDP连接代码
查看>>
动态加载js文件
查看>>
MySql优化
查看>>
linux中tomact部署安装
查看>>
Public Sale --HDU2149
查看>>
ServiceStack.OrmLite 学习记录4:删
查看>>