enum  StorageSpeedUnit { NUMERIC , STORAGE , SPEED ; 
} 
public  static  void  logger ( String  pattern, Object . . .  paramArray)  { String  cls =  MethodHandles . lookup ( ) . lookupClass ( ) . getName ( ) ; System. Logger  logger =  System . getLogger ( cls) ; String  msg =  String . format ( pattern, paramArray) ; logger. log ( System. Logger. Level . INFO , msg) ; 
} 
public  static  String  formatStorageUnit ( final  long  storageByteSize, StorageSpeedUnit  su)  { if  ( storageByteSize <  0 )  { return  "0" ; } String [ ]  unitArray =  new  String [ ] { } ; switch  ( su)  { case  null  ->  { break ; } case  NUMERIC  ->  { break ; } case  STORAGE  ->  unitArray =  new  String [ ] { "B" , "KB" , "MB" , "GB" , "TB" } ; case  SPEED  ->  unitArray =  new  String [ ] { "B/s" , "KB/s" , "MB/s" , "GB/s" , "TB/s" } ; default  ->  { break ; } } int  digitGroup =  ( int ) ( Math . log10 ( storageByteSize)  /  Math . log10 ( 1024 ) ) ; double  number =  storageByteSize /  Math . pow ( 1024 , digitGroup) ; var  formatter =   new  DecimalFormat ( "#,##0.##" ) ; if  ( unitArray. length ==  0 )  { return  formatter. format ( number) ; }  else  { return  formatter. format ( number)  +  " "  +  unitArray[ digitGroup] ; } 
} 
public  static  void  main ( String [ ]  sa)  { var  formatSize =  10737418 ; var  formatEmpty =  formatStorageUnit ( formatSize, null ) ; var  formatNumeric =  formatStorageUnit ( formatSize, StorageSpeedUnit . NUMERIC ) ; var  formatStorage =  formatStorageUnit ( formatSize, StorageSpeedUnit . STORAGE ) ; var  formatSpeed =  formatStorageUnit ( formatSize, StorageSpeedUnit . SPEED ) ; var  pattern =  "empty:%s,numeric:%s,storage:%s,speed:%s" ; Loggable . logger ( pattern, formatEmpty, formatNumeric, formatStorage, formatSpeed) ;  
} 
5 月 13 , 2024  9 :16:38 下午 com.elf.core.logger.Loggable logger
信息: empty:10.24,numeric:10.24,storage:10.24 MB,speed:10.24 MB/s