package Ġit . uni bo . tup ro log . solve . libs . io Ċ Ċ import Ġit . uni bo . tup ro log . solve . channel . Input Channel Ċ import Ġit . uni bo . tup ro log . solve . channel . Output Channel Ċ import Ġit . uni bo . tup ro log . solve . channel . Reader Channel Ċ import Ġit . uni bo . tup ro log . solve . channel . Writer Channel Ċ import Ġit . uni bo . tup ro log . solve . libs . io . exceptions . IOException Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . net . URL Ċ Ċ actual Ġfun Ġparse Url ( string : ĠString ): ĠUrl Ġ= ĠJ vm Url ( string ) Ċ Ċ actual Ġfun Ġfile Url ( path : ĠString ): ĠUrl Ġ= ĠJ vm Url ( protocol Ġ= Ġ" file ", Ġpath Ġ= Ġpath ) Ċ Ċ actual Ġfun Ġremote Url ( protocol : ĠString , Ġhost : ĠString , Ġport : ĠInt ?, Ġpath : ĠString , Ġquery : ĠString ?): ĠUrl Ġ= ĊĠĠĠ ĠJ vm Url ( protocol , Ġhost , Ġport , Ġpath , Ġquery ) Ċ Ċ fun ĠURL . to Url (): ĠUrl Ġ= Ġparse Url ( to External Form ()) Ċ Ċ fun ĠUrl . to URL (): ĠURL Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠJ vm Url Ġ-> Ġurl ĊĠĠĠ Ġelse Ġ-> ĠURL ( toString ()) Ċ } Ċ Ċ actual Ġfun ĠUrl . open Input Channel (): ĠInput Channel < String > Ġ= ĠReader Channel ( to URL (). open Stream ()) Ċ Ċ actual Ġfun ĠUrl . open Output Channel ( append : ĠBoolean ): ĠOutput Channel < String > Ġ{ ĊĠĠĠ Ġif Ġ(! isFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠIOException (" Writing Ġnot Ġsupported Ġfor Ġ${ toString () }") ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ( to URL (). file ) ĊĠĠĠ Ġval ĠoutputStream Ġ= ĠFileOutputStream ( file , Ġappend ) ĊĠĠĠ Ġreturn ĠWriter Channel ( output Stream ) Ċ } Ċ