当磁盘空间不够的时候,我们需要删除一些比较大的文件。如何找到这些大文件呢?下面的代码能够帮你实现
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class FindTop10File {
private static final double _1MB = 1024 * 1024;
private static final double _50MB = 1024 * 1024 * 50;
private static final String ROOT_DIR = "C:\\";
private static List<WrapFile> list = new ArrayList<WrapFile>();
public static void listFile(File f) {
if (f != null && f.exists()) {
if (f.isDirectory()) {
File[] file = f.listFiles();
for (File ff : file) {
listFile(ff);
}
} else if (f.isFile()) {
if (f.length() >= _50MB) { // 如果文件大于50M
WrapFile wrapFile = new WrapFile(f, f.length());
list.add(wrapFile);
}
}
}
}
public static void main(String[] args) {
File file = new File(ROOT_DIR);
listFile(file);
Collections.sort(list, new WrapFileComparator());// 按文件大小排序
int size = list.size() < 10 ? list.size() : 10;
for (int i = 0; i < size; i++) {
System.out.println(list.get(i).getFile().getAbsolutePath());
System.out.println(list.get(i).getLength() / _1MB + "MB");
}
}
}
import java.io.File;
public class WrapFile {
File file;
long length;
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public long getLength() {
return length;
}
public void setLength(long length) {
this.length = length;
}
public WrapFile(File file, long length) {
super();
this.file = file;
this.length = length;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((file == null) ? 0 : file.hashCode());
result = prime * result + (int) (length ^ (length >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
WrapFile other = (WrapFile) obj;
if (file == null) {
if (other.file != null)
return false;
} else if (!file.equals(other.file))
return false;
if (length != other.length)
return false;
return true;
}
}
import java.util.Comparator;
public class WrapFileComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
return (int) (((WrapFile) o2).getLength() - ((WrapFile) o1).getLength());
}
}