文件大小可视化

import java.io.File

fun main() {
    val c = File("""C:\""")
    
    for (i in (c.listFiles()?:return)) {
        println("""
            |${ i.getAbsolutePath() }, 
            |${ when{i.isFile()->"文件"; i.isDirectory()->"目录"; else->"未知"} }, ${ i.getFileSize() }
            |""".trimMargin("|"))
    }
}

// 文件大小可视化
data class FileSize(val size: Double, val dw: String) {
    override fun toString() : String {
        var fsize: String = "%.2f".format(size)
        when {
            fsize.matches(""".*\.00$""".toRegex()) -> fsize = fsize.replace(".00", "")
            fsize.matches(""".*\.[1-9]0$""".toRegex()) -> fsize = fsize.replace("0$".toRegex(), "")
        }
        return "$fsize $dw"
    }
}

fun File.getFileSize() : FileSize? {
    val size = this.length().toDouble()
    return when {
        size in 1.0*1024 .. 1.0*1024*1024 -> FileSize(size/1024, "KB")
        size in 1.0*1024*1024 .. 1.0*1024*1024*1024 -> FileSize(size/1024/1024, "MB")
        size in 1.0*1024*1024*1024 .. 1.0*1024*1024*1024*1024 -> FileSize(size/1024/1024/1024, "GB")
        else -> FileSize(size, "Byte")
    }
}
C:\my_path_eve_var.txt, 
文件, 2.8 KB

C:\OEMSF, 
文件, 317.54 KB

C:\pagefile.sys, 
文件, 7.93 GB

C:\perflogs, 
目录, 0 Byte

C:\ping.jpg, 
文件, 1.51 MB

C:\Program Files, 
目录, 8 KB

转载于:https://www.cnblogs.com/develon/p/11465328.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值