Linux 命令:ls -alh 增强版 java 实现

简介: Linux 命令:ls -alh 增强版 java 实现

Linux 命令:ls -alh 增强版 java 实现


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";
    }
}
目录
相关文章
|
20小时前
|
安全 网络协议 Linux
linux必学的60个命令
Linux是一个功能强大的操作系统,提供了许多常用的命令行工具,用于管理文件、目录、进程、网络和系统配置等。以下是Linux必学的60个命令的概览,但请注意,这里可能无法列出所有命令的完整语法和选项,仅作为参考
|
22小时前
|
监控 Linux 数据处理
|
22小时前
|
编解码 Ubuntu Linux
|
1天前
|
JSON Linux 数据格式
Linux命令发送http
请注意,`curl`命令非常灵活,可以根据您的需求进行多种配置和自定义。您可以查看 `curl`命令的文档以获取更多详细信息。
4 0
|
2天前
|
安全 Linux 测试技术
|
2天前
|
安全 Linux Windows
Linux中Shutdown命令使用介绍
Linux中Shutdown命令使用介绍
10 2
|
3天前
|
缓存 关系型数据库 Linux
Linux目录结构:深入理解与命令创建指南
Linux目录结构:深入理解与命令创建指南
|
3天前
|
数据挖掘 Linux vr&ar
Linux命令实战:解决日常问题的利器
Linux命令实战:解决日常问题的利器
|
3天前
|
NoSQL Linux Redis
Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍
Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍
17 0
|
3天前
|
安全 Linux Shell
linux基础命令详解
linux基础命令详解
10 0