package Ġcom . easy kotlin . learn . study 1 0 čĊč Ċ import Ġjava . io . File čĊč Ċ /** čĊ Ġ* ĠKotlin æĸĩä»¶ æĵįä½ľ å·¥åħ· čĊ Ġ*/ č Ċ object ĠKotlin File Util Ġ{ čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ Ġèİ·åıĸ æĸĩä»¶ åħ¨éĥ¨ åĨħå®¹ åŃĹç¬¦ä¸² čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun ĠgetFile Content ( fileName : ĠString ): ĠString Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfile : ĠFile Ġ= ĠFile ( fileName ) čĊĠĠĠĠĠĠĠ Ġreturn Ġfile . read Text ( Charsets . UTF _ 8 ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġèİ·åıĸ æĸĩä»¶ æ¯ı ä¸Ģ è¡Į åĨħå®¹ ï¼Į åŃĺ åħ¥ ä¸Ģä¸ª ĠList Ġä¸Ń čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun ĠgetFile Lines ( fileName : ĠString ): ĠList < String > Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( fileName ) čĊĠĠĠĠĠĠĠ Ġreturn Ġfile . read Lines ( Charsets . UTF _ 8 ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġèİ·åıĸ æĸĩä»¶ æ¯Ķ çī¹ æµģ æķ°ç»Ħ čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun ĠgetFile Bytes ( fileName : ĠString ): ĠByteArray Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfile : ĠFile Ġ= ĠFile ( fileName ) čĊĠĠĠĠĠĠĠ Ġreturn Ġfile . read Bytes () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ è¦ĨçĽĸ åĨĻ æĸĩä»¶ čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġwrite File ( text : ĠString , Ġdest File : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( dest File ) čĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĪĽå»º æĸĩä»¶ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . createNew File () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġfile . write Text ( text , ĠChar sets . UTF _ 8 ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ æľ« å°¾ è¿½åĬł åĨĻ æĸĩä»¶ čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġappend File ( text : ĠString , Ġdest File : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfile : ĠFile Ġ= ĠFile ( dest File ) čĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . createNew File () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġfile . append Text ( text , ĠChar sets . UTF _ 8 ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ Ġ é¦ĸ è¡Į æıĴåħ¥ åĨĻ æĸĩä»¶ čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġfirst Line Append File ( text : ĠString , Ġdest File : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfile : ĠFile Ġ= ĠFile ( dest File ) čĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . createNew File () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ// åħĪ è¯»åıĸ æĹ§ æĸĩä»¶ čĊĠĠĠĠĠĠĠ Ġval Ġlines : ĠList < String > Ġ= ĠgetFile Lines ( dest File ) čĊĠĠĠĠĠĠĠ Ġval Ġnew Lines Ġ= ĠArrayList < String >( lines . size Ġ+ Ġ 1 ) čĊĠĠĠĠĠĠĠ Ġ// é¦ĸ è¡Į æıĴåħ¥ čĊĠĠĠĠĠĠĠ Ġnew Lines . add ( text ) čĊĠĠĠĠĠĠĠ Ġ// åĨį æıĴåħ¥ åħ¶ä»ĸ çļĦ čĊĠĠĠĠĠĠĠ Ġlines . forEach () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Lines . add ( it ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġn ex Text Ġ= Ġnew Lines . join ToString ( separator Ġ= Ġ"\ n ") Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġit čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġfile . write Text ( nex Text ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ éģįåİĨ äºĨ æĮĩå®ļ æĸĩä»¶å¤¹ ä¸ĭçļĦ æīĢæľī æĸĩä»¶ čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġtraverse File Tree ( fileName : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfile : ĠFile Ġ= ĠFile ( fileName ) čĊĠĠĠĠĠĠĠ Ġval Ġfile Tree Walk Ġ= Ġfile . walk () čĊĠĠĠĠĠĠĠ Ġfile Tree Walk . iterator (). forEach Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġabsolute File Ġ= Ġit . absolute File čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( absolute File ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ Ġ éģįåİĨ å½ĵåīį æĸĩä»¶ ä¸ĭéĿ¢ æīĢæľī åŃĲ çĽ®å½ķ æĸĩä»¶ ï¼Į åŃĺ åħ¥ ä¸Ģä¸ª ĠIterator < File > Ġä¸Ń čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun ĠgetFile Iterator ( fileName : ĠString ): ĠIterator < File > Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( fileName ) čĊĠĠĠĠĠĠĠ Ġval Ġfile Tree Walk Ġ= Ġfile . walk () čĊĠĠĠĠĠĠĠ Ġreturn Ġfile Tree Walk . iterator () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ éģįåİĨ å½ĵåīį æĸĩä»¶ ä¸ĭéĿ¢ æīĢæľī åŃĲ çĽ®å½ķ æĸĩä»¶ ï¼Į æł¹æį® è¿ĩæ»¤ æĿ¡ä»¶ è¿ĩæ»¤ ï¼Į å¹¶ æĬĬ ç»ĵæŀľ åŃĺ åħ¥ ä¸Ģä¸ª ĠSequence < File > Ġä¸Ń čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun ĠgetFile Sequence By ( fileName : ĠString , Ġp : Ġ( File ) Ġ-> ĠBoolean ): ĠSequence < File > Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfile : ĠFile Ġ= ĠFile ( fileName ) čĊĠĠĠĠĠĠĠ Ġreturn Ġfile . walk (). filter ( p ) čĊĠĠĠ Ġ} č Ċ }