欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-24 17:42:57
...
    /**
     * 获取文件修改时间
     * @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获取文件和目录大小、最后修改时间和文件下载方法详细代码,希望对大家有所帮助,如有疑问或者问题可以在下方留言,楼主看到会第一时间回复。