突然发现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("
File file = new File("C:" + File.separator);
File list[] = file.listFiles();
for (int i = 0; i < list.length; i++) {// 迭代输出查看;
String size = "
" + list[i].getName() + ""+ formetFileSize(getFileSize(list[i])) + "
";str.append(size);
System.out.println(list[i].getName() + " "
+ getFileSize(list[i]));
}
str.append("
");//方便日志记录,把文件名弄成日期
String dateStr = new SimpleDateFormat("yyyyMMdd").format(new Date());
OutputStream os = new FileOutputStream(new File("d:" + File.separator
+ "C盘日志" + File.separator + dateStr + ".html"));
//写入html
os.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.Bin
12.830MB
autoexec.bat
24.000B
config.sys
10.000B
Documents and Settings
0B
hiberfil.sys
1.432GB
Intel
1.507MB
pagefile.sys
1.909GB
PerfLogs
0B
Program Files
2.003GB
ProgramData
700.322MB
Recovery
185.260MB
System Volume Information
0B
TopDeskDownload
0B
Users
1.953GB
win7
1.306MB
Windows
9.088GB