public ControlFile(File fileName, int controlDataSize) throws IOException {
canonicalPath = fileName.getCanonicalPath();
boolean existed = fileName.exists();
file = new RandomAccessFile(fileName, "rw");
channel = file.getChannel();
controlData = new ByteBufferPacket(ByteBuffer.allocateDirect(controlDataSize));
}