一个关于图片存储,操作SD卡的工具类
2013-01-10 10:58
155 查看
package com.yzxy.tool; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; 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 android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Environment; public class FileUtils { private String SDCardRoot; private String SDStateString ; private final static String ALBUM_PATH = Environment.getExternalStorageDirectory() + "/yueqiu/"; public FileUtils() { //得到当前外部存储设备的目录 SDCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator; // 获取扩展SD卡设备状态 SDStateString = Environment.getExternalStorageState(); } public File createFileInSDCard(String dir ,String fileName) throws IOException { File file = new File(SDCardRoot+ dir + File.separator + fileName); file.createNewFile(); return file; } public File creatSDDir(String dir) { File dirFile = new File(SDCardRoot + dir + File.separator); if( !dirFile.exists() ){ dirFile.mkdirs(); } return dirFile; } public boolean isFileExist(String fileName){ File file = new File(ALBUM_PATH + fileName); return file.exists(); } public String getFilePath(String dir,String fileName){ return SDCardRoot + dir + File.separator + fileName; } public long getSDAvailableSize(){ if (SDStateString.equals(android.os.Environment.MEDIA_MOUNTED)) { // 取得sdcard文件路径 File pathFile = android.os.Environment.getExternalStorageDirectory(); android.os.StatFs statfs = new android.os.StatFs(pathFile.getPath()); // 获取SDCard上每个block的SIZE long nBlocSize = statfs.getBlockSize(); // 获取可供程序使用的Block的数量 long nAvailaBlock = statfs.getAvailableBlocks(); // 计算 SDCard 剩余大小Byte long nSDFreeSize = nAvailaBlock * nBlocSize ; return nSDFreeSize; } return 0; } public boolean write2SD(String dir,String fileName,byte[] bytes){ if(bytes == null ){ return false; } OutputStream output = null; try { // 拥有可读可写权限,并且有足够的容量 if (SDStateString.equals(android.os.Environment.MEDIA_MOUNTED) && bytes.length < getSDAvailableSize() ) { File file = null; creatSDDir(dir); file = createFileInSDCard(dir,fileName); output = new BufferedOutputStream(new FileOutputStream(file)); output.write(bytes); output.flush(); return true; } } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }finally{ try{ if( output != null ){ output.close(); } } catch(Exception e){ e.printStackTrace(); } } return false; } public Bitmap readbitmap(String path) { File file = new File(ALBUM_PATH+path); BitmapFactory.Options opt = new BitmapFactory.Options(); if( !file.exists() ) { return null; } InputStream inputStream = null; try { inputStream = new BufferedInputStream(new FileInputStream(file)); opt.inPreferredConfig = Bitmap.Config.RGB_565; opt.inPurgeable = true; opt.inInputShareable = true; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // Bitmap bit = BitmapFactory.decodeFile(ALBUM_PATH+path); // return bit; return BitmapFactory.decodeStream(inputStream,null,opt); } public byte[] readFromSD(String dir,String fileName) { File file = new File(SDCardRoot + dir + File.separator + fileName); if( !file.exists() ){ return null; } InputStream inputStream = null; try { inputStream = new BufferedInputStream(new FileInputStream(file)); byte[] data = new byte[inputStream.available()]; inputStream.read(data); return data; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { if( inputStream != null ){ inputStream.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null; } public File write2SDFromInput(String dir,String fileName,InputStream input){ File file = null; OutputStream output = null; try { int size = input.available(); // 拥有可读可写权限,并且有足够的容量 if (SDStateString.equals(android.os.Environment.MEDIA_MOUNTED) && size < getSDAvailableSize() ) { creatSDDir(dir); file = createFileInSDCard(dir,fileName); output = new BufferedOutputStream(new FileOutputStream(file)); byte buffer [] = new byte[4*1024]; int temp ; while((temp = input.read(buffer)) != -1){ output.write(buffer,0,temp); } output.flush(); } } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }finally{ try{ if( output != null ){ output.close(); } } catch(Exception e){ e.printStackTrace(); } } return file; } public void saveFile(Bitmap bm, String fileName) throws IOException { File dirFile = new File(ALBUM_PATH); fileName=fileName.replace("/", "_"); if(!dirFile.exists()) { dirFile.mkdir(); } File myCaptureFile = new File(ALBUM_PATH + fileName); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile)); bm.compress(Bitmap.CompressFormat.JPEG, 80, bos); bos.flush(); bos.close(); System.out.println("保存成功"); } }
相关文章推荐
- 关于sql server 存储图片的一个简单方法
- Android关于SD卡的读写操作及固定图片大小
- JAVA操作图片裁切与缩放的一个工具类,个人收藏使用
- 【醒目】分享一个关于遍历SD卡中所有图片的方法
- 分享一个关于日期常用操作工具类
- IntegerUtils :一个关于整数操作的工具类
- SD卡存储图片的工具类
- javacv根据别人的修改的关于对图片操作的工具类
- android关于SD卡、存储的各种操作
- Android 记录一个好用的文件存储操作工具类SDCardHelper
- 撸了一个库:绕过Java Heap操作图片,完全避免OOM
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何创建快捷菜单执行人机交互操作、软件初始化设置
- 图片存储架构学习:独立的图片服务器,给爱一个独立的空间
- 自己写的一个关于Sqlite3 操作的 的C++封装
- 关于cookie的操作-----Cookie工具类
- JAVA操作图片裁切与缩放的一个工具类
- 关于一个简单的mysql存储过程实例
- 关于java上传文件一个工具类分享
- 关于多张图片在数据库中的存储问题
- 关于iOS中的图片格式,一个合格的开发者必须知道的5个知识点