package Ġint ellij . music . core Ċ Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . FileSystem s Ċ import Ġjava . nio . file . Standard Watch Event Kinds .* Ċ import Ġjava . nio . file . Watch Key Ċ Ċ class ĠM idi Directory Watcher ( private Ġval Ġon Directory Content Change : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġwatcher Ġ= ĠFileSystem s . getDefault (). new Watch Service () ĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprivate Ġvar Ġcurrent Key : ĠWatch Key ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġwatcher . take () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey . poll Events () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Directory Content Change () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey . reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Directory ( directory : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Key ?. cancel () ĊĠĠĠĠĠĠĠ Ġcurrent Key Ġ= Ġdirectory . to Path (). register ( watcher , ĠEN TRY _ CREATE , ĠEN TRY _ DELETE , ĠEN TRY _ MO DIFY ) ĊĠĠĠ Ġ} Ċ } Ċ