I considered using mmap to help manage the caching but what if your file is hosted on S3 or whatever? (Something I'm planning to support eventually)
So I opted for explicit management of chunks, also gives me more control and consistent cross platform behavior.