zoukankan      html  css  js  c++  java
  • 一个关于图片存储,操作SD卡的工具类

    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("保存成功");
    }
    }
  • 相关阅读:
    js之面向对象
    常用功能
    html圆环(该代码非原创,具体出处已不详)
    关于jsonp的一篇文章(传播好的东西)
    当切换select时,获取select选中的值;获取选中的单选按钮的val,判断复选框是否选中
    js类型判断(数字、0、""、undefined、null)
    js获取窗口可视范围的高度、获取窗口滚动条高度、文档内容实际高度
    66
    55
    44
  • 原文地址:https://www.cnblogs.com/LIANQQ/p/2854279.html
Copyright © 2011-2022 走看看