block based file reading