/** Ċ Ġ* ĠCopyright Ġ 2 0 1 0 Ġ- Ġ 2 0 2 1 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġjet brains . ex od us . lucene Ċ Ċ import Ġorg . apache . lucene . store . Buffered Checksum Ċ import Ġorg . apache . lucene . store . Index Output Ċ import Ġjava . io . OutputStream Ċ import Ġjava . util . zip . CRC 3 2 Ċ Ċ internal Ġclass ĠEx od us Index Output ( directory : ĠEx od us Directory , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString ) Ġ: ĠIndex Output (" Ex od us Index Output [$ name ]", Ġname ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġoutput : ĠOutputStream ĊĠĠĠ Ġprivate Ġvar Ġcurrent Position Ġ= Ġ 0 L ĊĠĠĠ Ġprivate Ġval Ġcrc Ġ= ĠBuffered Checksum ( CRC 3 2 ()) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv fs Ġ= Ġdirectory . vfs ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġv fs . open File ( directory . environment . and Check Current Transaction , Ġname , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNullPointerException (" Can 't Ġbe ") ĊĠĠĠĠĠĠĠ Ġoutput Ġ= Ġv fs . writeFile ( directory . environment . and Check Current Transaction , Ġfile ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ= Ġoutput . close () ĊĊĠĠĠ Ġoverride Ġfun ĠgetFile Pointer () Ġ= Ġcurrent Position ĊĊĠĠĠ Ġoverride Ġfun Ġget Checksum () Ġ= Ġcrc . value ĊĊĠĠĠ Ġoverride Ġfun Ġwrite Byte ( b : ĠByte ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoutput . write ( b . toInt ()) ĊĠĠĠĠĠĠĠ Ġ++ current Position ĊĠĠĠĠĠĠĠ Ġcrc . update ( b . toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite Bytes ( b : ĠByteArray , Ġoffset : ĠInt , Ġlength : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( length Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( length Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( b [ offset ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . write ( b , Ġoffset , Ġlength ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Position Ġ+= Ġlength . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrc . update ( b , Ġoffset , Ġlength ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ