文档章节

获取文件夹大小,文件大小,文件个数

sunfish
 sunfish
发布于 2015/10/15 16:09
字数 856
阅读 5
收藏 0
点赞 0
评论 0
package com.rb.huaihua.util.clear;

import java.io.File;
import java.io.FileInputStream;
import java.text.DecimalFormat;

/**
 * Created by sunfish on 2015/10/15.
 * 获取文件大小的类 使用时先创建该对象然后调用其中的方法
 */
public class GetFileSize {
    /**
     * 取得文件大小
     * @param file
     * @return
     * @throws Exception
     */
    public long getFileSizes(File file) throws Exception{
        long s=0;
        if (file.exists()) {
            FileInputStream fis = null;
            fis = new FileInputStream(file);
            s= fis.available();
        } else {
            file.createNewFile();
            System.out.println("文件不存在");
        }
        return s;
    }
    /**
     * 取得文件夹大小 // 递归
     * @param f
     * @return
     * @throws Exception
     */
    public long getFileSize(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 + getFileSize(flist[i]);
            } else {
                size = size + flist[i].length();
            }
        }
        return size;
    }

    /**
     * //转换文件大小
     * @param fileS
     * @return
     */
    public String FormetFileSize(long fileS) {
        DecimalFormat df = new DecimalFormat("0.00");
        String fileSizeString = "";
        if (fileS < 1024) {
            fileSizeString = df.format((double) fileS) + "B";
        } else if (fileS < 1048576) {
            fileSizeString = df.format((double) fileS / 1024) + "K";
        } else if (fileS < 1073741824) {
            fileSizeString = df.format((double) fileS / 1048576) + "M";
        } else {
            fileSizeString = df.format((double) fileS / 1073741824) + "G";
        }
        return fileSizeString;
    }

    /**
     * 递归求取目录文件个数
     * @param f
     * @return
     */
    public long getlist(File f){
        long size = 0;
        File flist[] = f.listFiles();
        size=flist.length;
        for (int i = 0; i < flist.length; i++) {
            if (flist[i].isDirectory()) {
                size = size + getlist(flist[i]);
                size--;
            }
        }
        return size;
    }

    //传入路径 获取文件或者文件夹大小 我自己写的方便下面的清除缓存里面获得缓存的大小 
    //返回的l表示:下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数
    public long getCacheSize(File file){
        GetFileSize g = new GetFileSize();
        long l = 0;//文件或者文件夹所含文件的长度
        try {
            if (file.isDirectory()){
                l = g.getFileSize(file);
            }else{
                l = g.getFileSizes(file);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return l;
    }
    //这个是main函数入口 不会使用可以看看这个
    /*public static void main(String args[])
    {
        GetFileSize g = new GetFileSize();
        long startTime = System.currentTimeMillis();
        try
        {
            long l = 0;
            String path = "C:\\WINDOWS";
            File ff = new File(path);
            if (ff.isDirectory()) { //如果路径是文件夹的时候
                System.out.println("文件个数           " + g.getlist(ff));
                System.out.println("目录");
                l = g.getFileSize(ff);
                System.out.println(path + "目录的大小为:" + g.FormetFileSize(l));
            } else {
                System.out.println("     文件个数           1");
                System.out.println("文件");
                l = g.getFileSizes(ff);
                System.out.println(path + "文件的大小为:" + g.FormetFileSize(l));
            }

        } catch (Exception e)
        {
            e.printStackTrace();
        }
        long endTime = System.currentTimeMillis();
        System.out.println("总共花费时间为:" + (endTime - startTime) + "毫秒...");
    }*/
}

我清除缓存的部分

//点击清理缓存 根据用户选择 删除相关的文件数据
else if (v.getId() == R.id.llClear) {
    //清理缓存
    //获取缓存的大小
    String size = getCacheSize();
    // 构造对话框
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(R.string.clear);
    builder.setMessage(getString(R.string.is_delete) + "\n" + "(缓存大小:" + size+")");
    //按对话框以外的地方不起作用。按返回键也不起作用
    builder.setCancelable(false);
    //确认清除
    builder.setPositiveButton(R.string.delete_yes, new DialogInterface.OnClickListener(){
        @Override
        public void onClick(DialogInterface dialog, int which){
            dialog.dismiss();
            // 删除文件
            doClear();
            UIHelp.showToast(getActivity(), getString(R.string.clearDone));
        }
    });
    // 取消清除
    builder.setNegativeButton(R.string.delete_no, new DialogInterface.OnClickListener(){
        @Override
        public void onClick(DialogInterface dialog, int which){
            dialog.dismiss();
        }
    });
    Dialog noticeDialog = builder.create();
    noticeDialog.show();
getCacheSize()方法和 doClear()方法:
//获得缓存大小的方法
private String getCacheSize() {
    String size = "";
    long l = 0;
    GetFileSize g = new GetFileSize();
    l = g.getCacheSize(getActivity().getCacheDir())
    +g.getCacheSize(new File("/data/data/"+ getActivity().getPackageName() + "/databases"))
    +g.getCacheSize(new File("/data/data/"+ getActivity().getPackageName() + "/shared_prefs"))
    +g.getCacheSize(getActivity().getFilesDir())
    +g.getCacheSize(new File(UpdateManager.mSavePath));
    size = g.FormetFileSize(l);
    return size;
}
//清除的方法 去工具类调用几个删除的方法
private void doClear() {
    //清除本应用内部缓存(/data/data/com.xxx.xxx/cache)
    ClearCache.cleanInternalCache(getActivity());

    //清除本应用所有数据库(/data/data/com.xxx.xxx/cache)
    ClearCache.cleanDatabases(getActivity());

    //清除本应用SharedPreference(/data/data/com.xxx.xxx/shared_prefs)
    ClearCache.cleanSharedPreference(getActivity());
    /*
    //按名字清除本应用数据库
    ClearCache.cleanDatabaseByName(getActivity(),"数据库名称");
    */

    //清除/data/data/com.xxx.xxx/files下的内容
    ClearCache.cleanFiles(getActivity());

    //清除外部cache下的内容(/mnt/sdcard/android/data/com.xxx.xxx/cache)
    ClearCache.cleanExternalCache(getActivity());

    //清除自定义路径下的文件
    ClearCache.cleanCustomCache(UpdateManager.mSavePath);
}


UpdateManager.mSavePath是一个常量,
String = Environment.() + File.++File.++File.;

是我写在UpdateManager这个类里面的,这个类用来更新管理的。

© 著作权归作者所有

共有 人打赏支持
sunfish
粉丝 1
博文 28
码字总数 17794
作品 0
长沙
MaxCompute读取分析OSS非结构化数据的实践经验总结

摘要: 本文背景 很多行业的信息系统中,例如金融行业的信息系统,相当多的数据交互工作是通过传统的文本文件进行交互的。此外,很多系统的业务日志和系统日志由于各种原因并没有进入ELK之类...

猫耳m
06/20
0
0
如何在hadoop中控制map的个数

本文为博主原创文章,未经博主允许不得转载。 hadooop提供了一个设置map个数的参数mapred.map.tasks,我们可以通过这个参数来控制map的个数。但是通过这种方式设置map 的个数,并不是每次都有...

Zero零_度
2016/07/05
8
0
文件上传&下载

文件上传: 1.所需要的包: commons-fileupload-1.2.1.jar commons-io-1.4.jar 2.浏览器端: 1>.请求方式必须是 post 2>.需要使用组件<input type="file" name="f"> 3>.表单必须设置encType="......

centrald
2016/03/28
99
0
hadoop中map的个数

hadooop提供了一个设置map个数的参数mapred.map.tasks,我们可以通过这个参数来控制map的个数。但是通过这种方式设置map的个数,并不是每次都有效的。原因是mapred.map.tasks只是一个hadoop的...

张欢19933
2016/03/31
29
0
Python实现删除目录下相同文件

让我们来分析一下这个问题:首先,文件个数非常多,手工查找是不现实的,再说,单凭我们肉眼,在几千张图片或文件里面找到完全相同的难度也是很大的。所以要用程序实现。那么用程序怎么实现呢...

duhaizhang
2012/07/15
0
0
Linux文件系统的几个性能测试软件小结

曾经测试Linux系统下的分布式集群系统的性能,使用了一些测试软件,公司让我给部门同事做一次基础培训,于是翻看以前所写的记录资料挑选了其中几个,所记之处并不完全,只记录使用的功能。 ...

Dcl_Snow
2013/08/30
0
0
调整Outlook 2010的pst文件大小

Outlook 2010 中 .pst 和 .ost 文件的大小限制有所提高 文章编号: 982577 - 查看本文应用于的产品 如果您是小型企业客户,请访问小型企业支持网站,了解其他疑难解答和学习资源。 展开全部 ...

余二五
2017/11/22
0
0
【php增删改查实例】第二十三节 - PHP文件上传

22. PHP文件上传 22.1 资源文件 将这三个东西拷贝项目的根目录。 拷贝完毕后,打开upload.html: 现在,我们在项目的根目录去编写一个upload.php。 22.4 文件上传 在PHP中,文件上传的时候会默...

剽悍一小兔
06/07
0
0
【渗透】浅谈webshell隐藏

跟我一起念后门口诀: 挑、改、藏、隐 来个例子先,例一: 只因为在目录里多瞅了一眼,只一眼,就认出了你。为什么你是那么的出众? 可疑点:文件名、时间、大小。(有点经验的人能很快发现这...

slyso
2014/10/17
0
2
Linux查看文件和文件夹大小

Linux查看文件和文件夹大小 1、du -sh 查看当前文件夹大小 du -sh * | sort -n 统计当前文件夹(目录)大小,并按文件大小排序 附送: du -sk filename 查看指定文件大小 2、 Linux:ls以K、M、G...

phacks
2015/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring配置xml启动报错 Connot find 'beans'

1.我们先看一下spring的原始配置 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSc......

江湖鱼大虾
8分钟前
0
0
与女儿谈商业模式 (4):戴尔的成功秘诀

分类:与女儿谈商业模式 | 标签: 戴尔 经济学 陈志武 2007-05-15 10:26阅读(7434)评论(36)   2007年5月《创富志》与“女儿谈商业模式”专栏 (之四)   戴尔的成功秘诀   陈志武   ...

祖冲之
17分钟前
0
0
www.w3.org被qiang导致logback报错:Connect reset

web项目部署到tomcat后,web项目中的logback不能运行,报错信息如下: Reported exception: ch.qos.logback.core.joran.spi.JoranException: I/O error occurred while parsing xml file......

浮躁的码农
31分钟前
0
0
JDeveloper中文乱码解决

全局设置字体; 全局设置环境编码; 项目设置编译器环境编码。

wffger
59分钟前
2
0
MySQL主从介绍 , 准备工作,配置主,配置从, 测试主从同步

MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启bin...

TaoXu
今天
2
0
线性代数学习总结

亭子happy
今天
1
0
Java8:Lambda表达式增强版Comparator和排序

1、概述 在这篇教程里,我们将要去了解下即将到来的JDK 8(译注,现在JDK 8已经发布了)中的Lambda表达式——特别是怎样使用它来编写Comparator和对集合(Collection)进行排序。 这篇文章是...

孟飞阳
今天
0
0
从架构到组件,深挖istio如何连接、管理和保护微服务2.0?

近几年我一直从事于微服务系统的设计以及实现方面的工作,属于微服务架构一线实践者。之前做过一些单体系统的微服务改造,在微服务拆分、治理等方面都有一定的经验。 本人比较特殊一点的经历...

xiaomin0322
今天
1
0
基于vue的h5文件切片上传(获取文件md5,实现秒传、进度条实现)

template <button @click="file"></button><label ref="upload" style="position: relative;"> <input type="file" @change="selectFile" style="position: abs......

hkaikai
今天
2
0
Spring Boot 2.0 项目实现自同步AD域账号

在通过Spring Boot的自动化装配功能及JDK自带的LDAP模块,可通过如下几个简单步骤实现业务系统自动同步AD域账号功能。 1. Java自带ldap搜索域账号信息核心代码: try { LdapContext ctx...

B超
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部