package cn.tedu.homework;
import java.io.File;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;
/** * 列出指定文件夹里的所有资源 * 如果是文件夹,就打印文件夹名称 * 如果是文件,就求总字节量 * 相当于linux命令:ls -alh */
public class Dir {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入要遍历的文件夹:");
File file = new File(sc.next());
fileRecursion(file);
}
/** * 遍历文件夹及里面的文件 * @param file */
public static void fileRecursion(File file) {
if (!file.exists()) {
System.err.println("此路径不存在");
return;
} else if (file.isDirectory()) {
File[] listFiles = file.listFiles();
if (listFiles != null) {
for (int i = 0; i < listFiles.length; i++) {
if (listFiles[i].isFile()) {
System.out.println(listFiles[i].getName() + '\t' + fileSize(listFiles[i].length()));
} else {
// 如果是文件夹,打印文件夹的路径,并进去
System.out.println(listFiles[i].getAbsolutePath());
fileRecursion(listFiles[i]);
}
}
}
} else {
System.out.println(file.getName() + '\t' + fileSize(file.length()));
}
}
/** * 求大小,根据大小使他显示不同的单位 * @param length * @return String */
private static String fileSize(long length) {
BigDecimal size = new BigDecimal(length + "");
BigDecimal divisor = new BigDecimal(1024 + "");
if(length >= 1024 * 1024 * 1024){
return size.divide(divisor, 2, RoundingMode.HALF_UP)
.divide(divisor, 2, RoundingMode.HALF_UP)
.divide(divisor, 2, RoundingMode.HALF_UP) + "GB";
}else if(length >= 1024 * 1024){
return size.divide(divisor, 2, RoundingMode.HALF_UP)
.divide(divisor, 2, RoundingMode.HALF_UP) + "MB";
}else if(length >= 1024) {
return size.divide(divisor, 2, RoundingMode.HALF_UP) + "KB";
}
return length + "B";
}
}
今天的文章Linux 命令:ls -alh 增强版 java 实现分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/67346.html