public void close() throws IOException { if (!valid) throw new IOException("invalid file descriptor"); try { VMChannel.close(native_fd); } finally { valid = false; closed = true; } }