C盘总是不知不觉就快满了,写个java小程序对文件夹做做监控

来源:互联网 发布:淘宝正品篮球鞋店 编辑:程序博客网 时间:2024/04/30 02:14

突然发现C盘变的很满,用各种清理工具清理过一段又快满了。。看来快要重装系统了。。

所以决定用java写个小程序查看一下C盘下面所有文件夹的大小,每隔一段时间看一下,就可以发现是哪些文件夹占用了你的空间。

本文纯属自己练习,熟悉一下java io。代码如下:

 

import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import java.text.DateFormat;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.Date;public class ReadC {public static void main(String[] args) throws Exception {writeFile();}private static void writeFile() throws Exception {//由于直接写在txt中看起来不方便,所以弄成html的table看着比较直接StringBuffer str = new StringBuffer("<table border='1'>");File file = new File("C:" + File.separator);File list[] = file.listFiles();for (int i = 0; i < list.length; i++) {// 迭代输出查看;String size = "<tr><td>" + list[i].getName() + "</td><td>"+ formetFileSize(getFileSize(list[i])) + "</td></tr>";str.append(size);System.out.println(list[i].getName() + "    "+ getFileSize(list[i]));}str.append("</table>");//方便日志记录,把文件名弄成日期String dateStr = new SimpleDateFormat("yyyyMMdd").format(new Date());OutputStream os = new FileOutputStream(new File("d:" + File.separator+ "C盘日志" + File.separator + dateStr + ".html"));//写入htmlos.write(str.toString().getBytes());os.close();}// 通过递归获取文件(夹)的大小,返回的是字节数private static long getFileSize(File file) {// 如果是文件,直接返回文件大小if (file.isFile())return file.length();//遍历文件夹else {long size = 0;File fileList[] = file.listFiles();if (fileList != null) {for (int i = 0; i < fileList.length; i++) {size = size + getFileSize(fileList[i]);}}return size;}}//将获取的字节进行格式化private static String formetFileSize(long size) {DecimalFormat df = new DecimalFormat("#.000");String fileSizeString = "";if (size == 0){return "0B";}else if (size < 1024) {fileSizeString = df.format((double) size) + "B";} else if (size < 1048576) {fileSizeString = df.format((double) size / 1024) + "KB";} else if (size < 1073741824) {fileSizeString = df.format((double) size / 1048576) + "MB";} else {fileSizeString = df.format((double) size / 1073741824) + "GB";}return fileSizeString;}}


 产生的效果如下,但是在我C盘只有15G左右的情况下用了50来秒。。。不知道有什么好方法可以快一点,第一次发博,欢迎指教。

 
$Recycle.Bin12.830MBautoexec.bat24.000Bconfig.sys10.000BDocuments and Settings0Bhiberfil.sys1.432GBIntel1.507MBpagefile.sys1.909GBPerfLogs0BProgram Files2.003GBProgramData700.322MBRecovery185.260MBSystem Volume Information0BTopDeskDownload0BUsers1.953GBwin71.306MBWindows9.088GB