SDCard助手类

  1 package com.zyh.sdcardHelper;
  2
  3 import java.io.BufferedInputStream;
  4 import java.io.BufferedOutputStream;
  5 import java.io.ByteArrayOutputStream;
  6 import java.io.File;
  7 import java.io.FileInputStream;
  8 import java.io.FileOutputStream;
  9 import java.io.IOException;
 10
 11 import android.content.Context;
 12 import android.graphics.Bitmap;
 13 import android.graphics.BitmapFactory;
 14 import android.os.Environment;
 15 import android.os.StatFs;
 16 import android.text.format.Formatter;
 17
 18 public class SDCardHelper {
 19     //判断SD卡是否被挂载
 20     public static boolean isSDCardMounted(){
 21         return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
 22     }
 23
 24     //获取SDCard的绝对路径目录
 25     public static String getSDCardBaseDir(){
 26         if(isSDCardMounted()){
 27             return Environment.getExternalStorageDirectory().getAbsolutePath();
 28         }
 29         return null;
 30     }
 31
 32     //获取SDCard总大小
 33     public static String getSDCardTotalSize(Context context){
 34         if(isSDCardMounted()){
 35             StatFs fs = new StatFs(getSDCardBaseDir());
 36             long blockSize = fs.getBlockSize();
 37             long totalBlocks = fs.getBlockCount();
 38             long totalSize = blockSize * totalBlocks;
 39             return Formatter.formatFileSize(context, totalSize);
 40         }
 41         return null;
 42     }
 43
 44     //获取sd卡的剩余空间
 45     public static String getSDCardFreeSize(Context context){
 46         if(isSDCardMounted()){
 47             StatFs fs = new StatFs(getSDCardBaseDir());
 48             long blockSize = fs.getBlockSize();
 49             long freeBlocks = fs.getFreeBlocks();
 50             long freeSize = blockSize * freeBlocks;
 51             return Formatter.formatFileSize(context, freeSize);
 52         }
 53         return null;
 54     }
 55
 56     //获取sd卡的可用空间
 57     public static String getSDCardAvailableSize(Context context){
 58         if(isSDCardMounted()){
 59             StatFs fs = new StatFs(getSDCardBaseDir());
 60             long blockSize = fs.getBlockSize();
 61             long availableBlocks = fs.getFreeBlocks();
 62             long availableSize = blockSize * availableBlocks;
 63             return Formatter.formatFileSize(context, availableSize);
 64         }
 65         return null;
 66     }
 67
 68     //往sd卡的公有目录下保存数据进文件
 69     public static boolean saveFileToSDCardPublicDir(byte[] data, String type, String fileName){
 70         BufferedOutputStream bos = null;
 71         if(isSDCardMounted()){
 72             try {
 73                 File file = Environment.getExternalStoragePublicDirectory(type);
 74                 bos = new BufferedOutputStream(new FileOutputStream(new File(file,fileName)));
 75                 bos.write(data);
 76                 bos.flush();
 77                 return true;
 78             } catch (Exception e) {
 79                 // TODO Auto-generated catch block
 80                 e.printStackTrace();
 81             }finally{
 82                 try {
 83                     bos.close();
 84                 } catch (IOException e) {
 85                     // TODO Auto-generated catch block
 86                     e.printStackTrace();
 87                 }
 88             }
 89         }
 90         return false;
 91     }
 92
 93     //往sd卡用户自定义目录中保存数据进文件
 94     public static boolean savaFileToSDCardCustomDir(byte[] data, String dir, String fileName){
 95         BufferedOutputStream bos = null;
 96         if(isSDCardMounted()){
 97             try {
 98                 File file = new File(getSDCardBaseDir() + File.separator + dir);
 99                 if(!file.exists()){
100                     file.mkdirs();//递归创建自定义目录
101                 }
102                 bos = new BufferedOutputStream(new FileOutputStream(new File(file,fileName)));
103                 bos.write(data);
104                 bos.flush();
105                 return true;
106             } catch (Exception e) {
107                 // TODO Auto-generated catch block
108                 e.printStackTrace();
109             }finally{
110                 try {
111                     bos.close();
112                 } catch (IOException e) {
113                     // TODO Auto-generated catch block
114                     e.printStackTrace();
115                 }
116             }
117         }
118         return false;
119     }
120
121     //往sd卡私有Files目录下保存数据进文件
122     //注意如果不加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>这个权限,则报空指针异常
123     //type可用为null
124     public static boolean saveFileToSDCardPrivateFilesDir(byte[] data, String type, String fileName, Context context){
125         BufferedOutputStream bos = null;
126         if(isSDCardMounted()){
127             try {
128                 File file = context.getExternalFilesDir(type);
129                 bos = new BufferedOutputStream(new FileOutputStream(new File(file,fileName)));
130                 bos.write(data);
131                 bos.flush();
132                 return true;
133             } catch (Exception e) {
134                 // TODO Auto-generated catch block
135                 e.printStackTrace();
136             }finally{
137                 try {
138                     bos.close();
139                 } catch (IOException e) {
140                     // TODO Auto-generated catch block
141                     e.printStackTrace();
142                 }
143             }
144         }
145         return false;
146     }
147
148     //往sd卡的私有Cache目录下保存数据进文件
149     //cache目录和files目录是同一级的
150     public static boolean saveFileToSDCardPrivateCacheDir(byte[] data, String fileName, Context context){
151         BufferedOutputStream bos = null;
152         if(isSDCardMounted()){
153             try {
154                 File file = context.getExternalCacheDir();
155                 bos = new BufferedOutputStream(new FileOutputStream(new File(file,fileName)));
156                 bos.write(data);
157                 bos.flush();
158                 return true;
159             } catch (Exception e) {
160                 // TODO Auto-generated catch block
161                 e.printStackTrace();
162             }finally{
163                 try {
164                     bos.close();
165                 } catch (IOException e) {
166                     // TODO Auto-generated catch block
167                     e.printStackTrace();
168                 }
169             }
170         }
171         return false;
172     }
173
174     //把bitmap保存在sd卡的私有cache目录中
175     public static boolean saveBitmapToSDCardPrivateCacheDir(Bitmap bitmap,String fileName, Context context){
176         if(isSDCardMounted()){
177             BufferedOutputStream bos = null;
178             File file = context.getExternalCacheDir();
179             try {
180                 bos = new BufferedOutputStream(new FileOutputStream(new File(file,fileName)));
181                 //100表示压缩率为0
182                 if(fileName != null && (fileName.endsWith(".png") || fileName.endsWith(".PNG"))){
183                     bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos);
184                 }else{
185                     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);
186                 }
187                 bos.flush();
188             } catch (Exception e) {
189                 // TODO Auto-generated catch block
190                 e.printStackTrace();
191             }finally{
192                 if(bos != null){
193                     try {
194                         bos.close();
195                     } catch (IOException e) {
196                         // TODO Auto-generated catch block
197                         e.printStackTrace();
198                     }
199                 }
200             }
201             return true;
202         }
203         return false;
204     }
205
206     //从sd卡的路径中获取文件的内容
207     public static byte[] readFileFromSDCard(String filePath){
208         BufferedInputStream bis = null;
209         ByteArrayOutputStream baos = new ByteArrayOutputStream();
210         try {
211             bis = new BufferedInputStream(new FileInputStream(new File(filePath)));
212             byte[] buffer = new byte[8 * 1024];
213             int hasRead = 0;
214             while((hasRead = bis.read(buffer)) != -1){
215                 baos.write(buffer, 0, hasRead);
216                 baos.flush();
217             }
218             return baos.toByteArray();
219         } catch (Exception e) {
220             // TODO Auto-generated catch block
221             e.printStackTrace();
222         }finally{
223             try {
224                 baos.close();
225                 bis.close();
226             } catch (IOException e) {
227                 // TODO Auto-generated catch block
228                 e.printStackTrace();
229             }
230         }
231         return null;
232     }
233
234     //从sd卡中获取Bitmap文件
235     public static Bitmap loadBitmapFromSDCard(String filePath){
236         byte[] data = readFileFromSDCard(filePath);
237         if(data != null){
238             Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
239             if(bitmap != null){
240                 return bitmap;
241             }
242         }
243         return null;
244     }
245
246     //获取sd卡的公有目录路径
247     public static String getSDCardPublicDir(String type){
248         return Environment.getExternalStoragePublicDirectory(type).toString();
249
250     }
251
252     //获取sd卡私有cache目录路径
253     public static String getSDCardPrivateCacheDir(Context context){
254         return context.getExternalCacheDir().getAbsolutePath();
255     }
256
257     //sd卡私有files目录下的路径
258     public static String getSDCardPrivateFilesDir(Context context, String type){
259         return context.getExternalFilesDir(type).getAbsolutePath();
260     }
261
262     //从sd卡中删除文件
263     public static boolean removeFileFromSDCard(String filePath){
264         File file = new File(filePath);
265         if(file.exists()){
266             try {
267                 file.delete();
268                 return true;
269             } catch (Exception e) {
270                 return false;
271             }
272         }
273         return false;
274     }
275
276 }

参考:http://www.androidchina.net/4106.html

时间: 2024-10-11 14:49:27

SDCard助手类的相关文章

WorldWind源码剖析系列:代理助手类ProxyHelper

代理助手类ProxyHelper通过平台调用的互操作技术封送了若干Win32结构体和函数.该类类图如下. 提供的主要处理方法基本上都是静态函数,简要描述如下: 内嵌类型WINHTTP_AUTOPROXY_OPTIONS代表自动代理选项的Win32结构体. 内嵌类型WINHTTP_PROXY_INFO代表被WinHTTP互操作返回的代理信息结构体. static extern IntPtr WinHttpOpen()封送Win32动态链接库中的打开Windows Http服务函数. static

WorldWind源码剖析系列:图像助手类ImageHelper

图像助手类ImageHelper封装了对各种图像的操作.该类类图如下. 提供的主要处理方法基本上都是静态函数,简要描述如下: public static bool IsGdiSupportedImageFormat(string imageFileName) 静态函数用给定的图像文件名称来判断该图像是否是Windows GDI+支持的图像. public static Texture LoadTexture(string textureFileName) 静态函数从指定的图像文件路径加载并返回纹

C# SQL数据库助手类2.0(自用)

1 using System; 2 using System.Collections.Generic; 3 using System.Configuration; 4 using System.Data; 5 using System.Data.SqlClient; 6 using System.Text; 7 8 namespace YcTools 9 { 10 /// <summary>C# SQL数据库助手类2.0</summary> 11 public class YSql

C# I/O 助手类

在使用 C# 语言解 ACM 题的时候,如果能够有一个 ReadInt32 方法直接从标准输入读取整数比较方便的.下面就是一个 I/O 助手类 IOHelper: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

Yii2 数组助手类arrayHelper

数组助手类 ArrayHelper 1.什么是数组助手类 Yii 数组助手类提供了额外的静态方法,让你更高效的处理数组. a.获取值(getValue) class User { public $name = 'Alex'; } $array = [ 'foo' => [ 'bar' => new User(),ddd ] ] 获取 name 的值 PHP 方法: $value = isset($array['foo']['bar']->name) ? $array['foo']['na

AES加密解密 助手类 CBC加密模式

string str = "2018"; string result1 = AESHelper.AesEncrypt(str); string result2 = AESHelper.AesDecrypt(result1); namespace Demo { /// <summary> /// AES加密解密 助手类 /// CBC加密模式 /// </summary> public class AESHelper { /// <summary> /

加解密总结(附助手类)

对称加密算法:DES.AES.IDEA.RC2.RC4.SKIPJACK……加解密使用相同密钥,这个是对称加密.对称加密优点是速度快 非对称加密算法:RSA.DSA.DH.ECC.EL GAMAL……公钥加密数据,然后私钥解密的情况被称为加密解密:因为公钥加密的数据只有它相对应的私钥可以解开,所以你可以把公钥给人和人,让他加密他想要传送给你的数据,这个数据只有到了有私钥的你这里,才可以解开成有用的数据,其他人就是得到了,也看懂内容实际应用中,一般都是和对方交换公钥,然后你要发给对方的数据,用他的

考勤助手类图的设计

以上为类图1.0版本,其中在“教务老师”与“信箱”的关系处争议较大,但是从调用关系上来分析我认为这样的设计是没有错误的,所以这个问题大家最终达成一致.至于学生和出勤表之间的联系的确是我的考虑不周,所以是应该做修改的.再有就是一张考勤表应该匹配一张出勤表,所以组合的数量关系上是有错误的,以下是修改后的版本: 根据以上仅考虑重要逻辑部分的类的关系,以及时序图的设计,我将uml类图进行了进一步的补充设计:

Yii的数组助手类

获取值 用原生PHP从一个对象.数组.或者包含这两者的一个复杂数据结构中获取数据是非常繁琐的. 你首先得使用isset 检查 key 是否存在, 然后如果存在你就获取它,如果不存在, 则提供一个默认返回值: Yii 提供了一个非常方便的方法来做这件事: 方法的第一个参数是我们从哪里获取值.第二个参数指定了如何获取数据, 它可以是下述几种类型中的一个: 数组键名或者欲从中取值的对象的属性名称: 以点号分割的数组键名或者对象属性名称组成的字符串,上例中使用的参数类型就是该类型: 返回一个值的回调函数