package Ġcom . any . net library . cache Ċ Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ Ċ import Ġjava . io .* Ċ import Ġjava . security . Message Digest Ċ Ċ /** Ċ Ġ* Ġ@ author Ġany Ċ Ġ* Ġ@ date Ġ 2 0 1 7 / 1 1 / 3 0 Ċ Ġ*/ Ċ object ĠFileUtils Ġ{ ĊĊ Ċ // ĠĠĠ Ġfun Ġget Result By FilePath ( filePath : ĠString ): ĠString ? Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( filePath ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġreturn Ġnull Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠFileInputStream ( file ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġconvert Stream ToString ( input ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġnull Ċ // ĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æĸĩä»¶ åĨħå®¹ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠfilePath ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Result By FilePath In Kotlin ( filePath : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( filePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile . read Text () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġwrite Result ToFile In Kotlin ( filePath : ĠString , Ġresult : ĠString , Ġis Append : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate File ( filePath ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( filePath ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Append ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . write Text ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . append Text ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ // ĠĠĠ Ġ/** Ċ // ĠĠĠĠ Ġ* Ġ åĨĻåħ¥ æĸĩä»¶ ï¼Į è¦ĨçĽĸ åĨĻåħ¥ Ċ // ĠĠĠĠ Ġ* Ċ // ĠĠĠĠ Ġ* Ġ@ param ĠfilePath Ċ // ĠĠĠĠ Ġ* Ġ@ param Ġresult Ċ // ĠĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġ@ Synchron ized Ċ // ĠĠĠ Ġfun Ġwrite Result ToFile ( filePath : ĠString , Ġresult : ĠString ): ĠInt Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġcreate File ( filePath ) Ċ // ĠĠĠĠĠĠĠ Ġvar Ġf os : ĠFileOutputStream ? Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġf os Ġ= ĠFileOutputStream ( filePath ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġf os . write ( result . toByteArray ( charset (" UTF - 8 "))) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġf os . flush () Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 Ċ // ĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf os ?. close () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġ 1 Ċ // ĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġcreate File ( filePath : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( filePath )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( filePath ) ĊĠĠĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġp aren File Ġ= Ġfile . parent File ĊĠĠĠĠĠĠĠ Ġif Ġ( paren File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbool Ġ= Ġp aren File . mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" msg ", Ġ" boolean : Ġ$ bool ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġfun Ġconvert Stream ToString (` is `: ĠInputStream ?): ĠString ? Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` is ` Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġline : ĠString Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠBufferedReader ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInputStreamReader (` is `, Ġ" UTF - 8 ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(( line Ġ= Ġreader . readLine ()) Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( line ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠOut Of Memory Error ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġerror . printStackTrace () Ċ // ĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is ` ?. close () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġnull Ċ // ĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ æĸĩä»¶ åĲį Ġkey ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget MD 5 ( key : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmd 5 : ĠMessage Digest ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmd 5 Ġ= ĠMessage Digest . getInstance (" MD 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcharArray Ġ= Ġkey . toCharArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠbyteArray Ġ= ĠByteArray ( char Array . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin ĠcharArray . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbyteArray [ i ] Ġ= ĠcharArray [ i ]. to Byte () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmd 5 Bytes Ġ= Ġmd 5 . digest ( byteArray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhex Value Ġ= ĠStringBuffer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġmd 5 Bytes . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ` val ` Ġ= Ġmd 5 Bytes [ i ]. toInt () Ġand Ġ 0 xff ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` val ` Ġ< Ġ 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhex Value . append (" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhex Value . append ( Integer . to HexString (` val ` )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhex Value . toString () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġkey ĊĠĠĠ Ġ} Ċ Ċ } Ċ