Java获取文件和目录大小、最后修改时间和文件下载方法详细代码

    /**
     * 获取文件修改时间
     * @Title: getFileTime
     * @param 文件路径
     * @return String 文件修改时间
     * @author projectNo
     */
    public String getFileTime(String filepath){  
        File f = new File(filepath);   
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");             
        Calendar cal = Calendar.getInstance();  
        long time = f.lastModified();  
        cal.setTimeInMillis(time);       
        return formatter.format(cal.getTime()); 
    }

    /**
     * 获取文件大小
     * @Title: getFileSizes
     * @param File
     * @return String 转换后的文件大小
     * @author projectNo
     * 
     */

    private long getFileSizes(final File file) {
        if (file.isFile())
            return file.length();
        final File[] children = file.listFiles();
        long total = 0;
        if (children != null)
            for (final File child : children)
                total += getFileSizes(child);
        return total;
    }

    /**
     * 递归获取目录大小
     * @Title: getFileSize
     * @param File
     * @return long 目录大小
     * @author projectNo
     * @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;
     }

     /**
     * 转换文件大小
     * @Title: FormetFileSize
     * @param long文件大小值
     * @return String 文件大小
     * @author projectNo
     * 
     */
     public String FormetFileSize(long fileS) {
        DecimalFormat df = new DecimalFormat("#.00");
        DecimalFormat d = new DecimalFormat("#");
        String fileSizeString = "";
        if(fileS < 1024){
            fileSizeString = d.format((double) fileS) + "B";
        } else if (fileS < 1048576) {
            fileSizeString = df.format((double) fileS / 1024) + "KB";
        } else if (fileS < 1073741824) {
            fileSizeString = df.format((double) fileS / 1048576) + "MB";
        } else {
            fileSizeString = df.format((double) fileS / 1073741824) +"GB";
        }
        return fileSizeString;
     } 

    /**
     * 文件下载
     * @Title: download
     * @Description: 文件下载
     * @return 下载文件
     * @author projectNo
     * @date 2017-8-9 下午9:35:06
     */
public void download (HttpServletResponse response) {
        String path = "D:/a.txt";//保证目录下有此文件,如没有手动新建
         try {
            // path是指欲下载的文件的路径。
            File file = new File(path);            
            // 取得文件名。
            String filename = file.getName();
            // 以流的形式下载文件。
            InputStream fis = new BufferedInputStream(new FileInputStream(path));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            // 清空response
            response.reset();
            // 设置response的Header,防止文件名乱码
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("gb2312"),"ISO8859-1"));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

以上就是Java获取文件和目录大小、最后修改时间和文件下载方法详细代码,希望对大家有所帮助,如有疑问或者问题可以在下方留言,楼主看到会第一时间回复。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值