zoukankan      html  css  js  c++  java
  • 文件大小可视化

    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
    
  • 相关阅读:
    javaScript快速入门
    解决编程式路由往同一地址跳转时会报错的情况
    babel 依赖
    路由拆分可以达到一定程度的性能优化
    正则的扩展
    设计模式
    mysql数据库
    php基本语法
    事件循环
    面向对象编程
  • 原文地址:https://www.cnblogs.com/develon/p/11465328.html
Copyright © 2011-2022 走看看