not using bytebuffer / filechannel