o problema aí é que vc (java) vai ter que ficar, de tempos em tempos, pedindo pro so informações desses arquivos/pastas.
Imagina o seguinte:
Hoje vc diz quê de dez em 10 minutos basta pra sua “monitoração”, mas amanhão tu percebe que tem de ser de 1 em 1 minuto, e depois de 10 em 10 segundos (daí tu senta, chora e joga o código fora).
Não seria melhor vc fazer o so “notificar” qdo algo for alterado? Vc não vai precisar monitorar nada no java. Vai criar apenas um listenner (ouvinte) que será executado apenas qdo algum arquivo for modificado.
Agora vamos pro prático: vc pode escrever um serviço que se encarregue de monitorar essas pastas/arquivos (NT, C ou C++). Teria de ser um serviço pq assim vc teria como interceptar algum evento do so pra fazer essa brincadeira - qq outra forma, não tenho certeza, te forçará a escrever um loop e ficar perguntando quem foi alterado (e é isso que vc não quer certo?).
Acho que isso é complicado (não sei teu nível de java), mas caso vc tenha mais coragem do que vida social vamos tentar ver:
Dá uma olhado no sourceforge que deve ter os fontes de algum tipo de serviço semelhante lá (é a primeira parte, só te interessa o esquele do serviço).
Windows API vai ajudar tb.
Numa segunda parte vc poderia estudar JNI (Java Native Interface) pra saber como chamar c à partir do java e vice-versa.
Precisei de algo parecido em um projeto no qual trabalhei mas graças a deus o bichinho foi descontinuado (pro bem do resto da minha sanidade mental).
EDIT: vc pode optar por monitorar a pasta/arquivo (solução mais barata e rápida), mas fique ciente que se o número de pastas e arquivos forem muito grandes isso pode não funcionar com um bom tempo de resposta.