文档章节

Android SD卡,文件,文件夹工具

小强强强
 小强强强
发布于 2015/11/10 16:14
字数 947
阅读 130
收藏 4
    /**
     * SD卡是否存在
     * 
     * @return true 存在 false 不存在
     */
    public boolean isSdExist() {
        boolean sdCardExist = Environment.getExternalStorageState().equals(
                android.os.Environment.MEDIA_MOUNTED);
        return sdCardExist;
    }
    
    /**
     * 获得SD卡总大小
     * @parm sizeType: 返回的SD卡大小的单位 SIZETYPE_B,SIZETYPE_KB,SIZETYPE_MB,SIZETYPE_GB
     * @return double类型 SD卡大小
     */
    public double getSDTotalSize(int sizeType) {
        if (isSdExist()) {
            File path = Environment.getExternalStorageDirectory();
            StatFs stat = new StatFs(path.getPath());
            long blockSize = stat.getBlockSize();
            long totalBlocks = stat.getBlockCount();
            return FormetFileSize(blockSize * totalBlocks, sizeType);
        }
        return 0;
    }
    /**
     * 获得SD卡总大小
     * @parm context  上下文
     * @return
     */
    public String getSDTotalSize(Context context) {
        if (isSdExist()) {
            File path = Environment.getExternalStorageDirectory();
            StatFs stat = new StatFs(path.getPath());
            long blockSize = stat.getBlockSize();
            long totalBlocks = stat.getBlockCount();
            return Formatter.formatFileSize(context, blockSize * totalBlocks);
        }
        return "";
    }
    /**
     * 获得SD卡剩余容量,即可用大小
     * 
     * @return
     */
    public double getSDAvailableSize(int sizeType) {
        if (isSdExist()) {
            File path = Environment.getExternalStorageDirectory();
            StatFs stat = new StatFs(path.getPath());
            long blockSize = stat.getBlockSize();
            long availableBlocks = stat.getAvailableBlocks();
            return FormetFileSize(blockSize * availableBlocks, sizeType);
        }
        return 0;
    }
    /**
     * 获得SD卡剩余容量,即可用大小
     * 
     * @return
     */
    public String getSDAvailableSize(Context context) {
        if (isSdExist()) {
            File path = Environment.getExternalStorageDirectory();
            StatFs stat = new StatFs(path.getPath());
            long blockSize = stat.getBlockSize();
            long availableBlocks = stat.getAvailableBlocks();
            return Formatter.formatFileSize(context, blockSize * availableBlocks);
        }
        return "";
        
    }
    
    /**
     * 获取指定文件大小
     * 
     * @param file
     * @return
     * @throws Exception
     */
    @SuppressWarnings("resource")
    public long getFileSize(File file) throws Exception {
        long size = 0;
        if (file.exists()) {
            FileInputStream fis = null;
            fis = new FileInputStream(file);
            size = fis.available();
        } else {
            file.createNewFile();
            Log.e("获取文件大小", "文件不存在!");
        }
        return size;
    }
    
    /**
     * 获取指定文件夹大小
     * 
     * @param f
     * @return
     * @throws Exception
     */
    public long getFileSizes(File f) throws Exception {
        long size = 0;
        File flist[] = f.listFiles();
        for (int i = 0; i < flist.length; i++) {
            if (flist[i].isDirectory()) {
                size = size + getFileSizes(flist[i]);
            } else {
                size = size + getFileSize(flist[i]);
            }
        }
        return size;
    }
    
    /**
     * 获取指定文件的指定单位的大小
     * 
     * @param filePath 文件路径
     * @param sizeType 获取大小的类型1为B、2为KB、3为MB、4为GB
     * @return double值的大小
     */
    public double getFileOrFilesSize(String filePath, int sizeType) {
        File file = new File(filePath);
        if (!file.exists()) {
            return 0;
        }
        long blockSize = 0;
        try {
            if (file.isDirectory()) {
                blockSize = getFileSizes(file);
            } else {
                blockSize = getFileSize(file);
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.e("获取文件大小", "获取失败!");
        }
        return FormetFileSize(blockSize, sizeType);
    }
    
    public static final int SIZETYPE_B = 1;
    public static final int SIZETYPE_KB = 2;
    public static final int SIZETYPE_MB = 3;
    public static final int SIZETYPE_GB = 4;
    /**
     * 转换文件大小,指定转换的类型
     * 
     * @param fileS
     * @param sizeType
     * @return
     */
    private double FormetFileSize(long fileS, int sizeType) {
        DecimalFormat df = new DecimalFormat("#.00");
        double fileSizeLong = 0;
        switch (sizeType) {
        case SIZETYPE_B:
            fileSizeLong = Double.valueOf(df.format((double) fileS));
            break;
        case SIZETYPE_KB:
            fileSizeLong = Double.valueOf(df.format((double) fileS / 1024));
            break;
        case SIZETYPE_MB:
            fileSizeLong = Double.valueOf(df.format((double) fileS / 1048576));
            break;
        case SIZETYPE_GB:
            fileSizeLong = Double.valueOf(df
                    .format((double) fileS / 1073741824));
            break;
        default:
            break;
        }
        return fileSizeLong;
    }
    
    /**
     * 创建文件
     * 
     * @param path 文件夹路径
     * @param fileName 文件名称
     * @return
     */
    public File getOutFile(String path, String fileName) {
        if (!isSdExist()) {
            return null;
        }
        if (path != null) {
            File mediaStorageDir = new File(path);
            if (!mediaStorageDir.exists()) {
                if (!mediaStorageDir.mkdirs()) {
                    return null;
                }
            }
        }
        File f = new File(path + fileName);
        if (!f.exists()) {
            try {
                f.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } 
        return f;
    }
    
    /**
     * 向已创建的文件中写入数据
     * @param str 写入内容
     * @param fileName 文件名称
     */ 
    @SuppressLint("SimpleDateFormat")
    public void print(String str, String fileName) {

        // 获取SD卡剩余大小
        double sdSize = getSDAvailableSize();
        if (sdSize < 3) {
            return;
        }
        FileWriter fw = null;
        BufferedWriter bw = null;
        String datetime = "";
        try {
            SimpleDateFormat tempDate = new SimpleDateFormat("yyyy-MM-dd" + " " + "hh:mm:ss");
            datetime = tempDate.format(new java.util.Date()).toString();//插入日期时间
            fw = new FileWriter(filenameTemp, true);//
            // 创建FileWriter对象,用来写入字符流
            bw = new BufferedWriter(fw); // 将缓冲对文件的输出
            String myreadline = "[ " + datetime + "]" + str + "\n";
            bw.write(myreadline); // 写入文件
            bw.newLine();
            bw.flush(); // 刷新该流的缓冲
            bw.close();
            fw.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            try {
                bw.close();
                fw.close();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
            }
        }
    }
    
    /** 
     * 获得机身内存总大小 
     *  
     * @return 
     */  
    public String getRomTotalSize(Context context) {  
        File path = Environment.getDataDirectory();  
        StatFs stat = new StatFs(path.getPath());  
        long blockSize = stat.getBlockSize();  
        long totalBlocks = stat.getBlockCount();  
        return Formatter.formatFileSize(context, blockSize * totalBlocks);
    }
    
    /** 
     * 获得机身内存总大小 
     * @parm sizeType 返回大小的单位
     * @return 
     */  
    public double getRomTotalSize(int sizeType) {  
        File path = Environment.getDataDirectory();  
        StatFs stat = new StatFs(path.getPath());  
        long blockSize = stat.getBlockSize();  
        long totalBlocks = stat.getBlockCount();
        return FormetFileSize(blockSize * totalBlocks , sizeType);
    }
    
    /** 
     * 获得机身可用内存 
     *  
     * @return 
     */  
    private String getRomAvailableSize(Context context) {  
        File path = Environment.getDataDirectory();  
        StatFs stat = new StatFs(path.getPath());  
        long blockSize = stat.getBlockSize();  
        long availableBlocks = stat.getAvailableBlocks();  
        return Formatter.formatFileSize(context, blockSize * availableBlocks);  
    } 
    
    /** 
     * 获得机身可用内存 
     *  
     * @return 
     */  
    private double getRomAvailableSize(inte sizeType) {  
        File path = Environment.getDataDirectory();  
        StatFs stat = new StatFs(path.getPath());  
        long blockSize = stat.getBlockSize();  
        long availableBlocks = stat.getAvailableBlocks();  
        return FormetFileSize(blockSize * availableBlocks , sizeType);  
    }


© 著作权归作者所有

小强强强
粉丝 5
博文 25
码字总数 6220
作品 0
海淀
程序员
私信 提问
PandaBoard烧写指南

此手册介绍的是把x-loader、u-boot、kernel和android的二进制文件烧写到PandaBoard开发板的非易失存储器上,如flash。大家可用从PandaBoard官网下载的源码编译生成的二进制文件烧写,也可直接...

晨曦之光
2012/03/14
2.6K
0
Android模拟器的常用命令

经常用到的工具一般在Android SDK的tools目录下,而最新的SDK Tools r12将最常用的adb.exe放在了platform-tools文件夹下。 这里把platform-tools文件夹下的adb.exe、AdbWinApi.dll与AdbWinU...

lhanoo
2012/02/02
57
0
Android模拟器的常用命令

经常用到的工具一般在Android SDK的tools目录下,而最新的SDK Tools r12将最常用的adb.exe放在了platform-tools文件夹下。 这里把platform-tools文件夹下的adb.exe、AdbWinApi.dll与AdbWinU...

双子座
2011/08/08
2.8K
1
自定义 Android 的警告提醒声音

Android 恼人的是,你不能从你的音乐文件夹浏览您最喜爱的歌曲或音轨并设置为Android手机的报警声。但是仍有办法通过Android手机的默认的闹钟来做到这点。 详细步骤: 使用数据线连接 Androi...

鉴客
2012/02/05
2.7K
0
说说 Android 中如何使用摄像头和相册

很多 APP 应用都有用户头像功能,用户既可以调用摄像头马上拍一张美美的自拍,也可以打开相册选取一张心仪的照片作为头像。 1 调用摄像头 布局文件: 活动类代码: getExternalCacheDir() 可...

deniro
2018/05/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
6分钟前
2
0
wildfly(JBoss AS)应用服务器快速入门

什么是wildfly JBoss AS 从8版本起名为wildfly。Wildfly是一个开源的基于JavaEE的轻量级应用服务器。可以在任何商业应用中免费使用。 WildFly是一个灵活的、轻量的、强大管理能力的应用程序服...

程序新视界
31分钟前
2
0
Java集合类常见面试知识点总结

Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾。 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/column/details/21930...

Java技术江湖
34分钟前
6
0
怎么用for循环打出爱心

先上效果图: 这是用*组成的爱心,下面讲讲思路: 首先这个图形可以拆分成三部分:第一部分是上面三行的两个梯形,第二部分是中间三行的长方形,第三部分是最下面的倒三角形。 其实图形拆分好...

INEVITABLE
39分钟前
4
0
用HttpUrlConnection伪造成HttpClient

https://www.jianshu.com/p/27ad06cc39d2

shzwork
45分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部