Unless you store the block size as part of the file data (or you use a special char to mark block boundaries) you don't know from the file with what block size the file was written. However, the data can be read back from the file using a different block size. In the example, if it was read with a block size of 6 rather than 12 then the first read will obtain the first 6 chars from the file, the next read the next 6 and so on.