private void read(BufferedReader reader) throws IOException
    {
        String line;

        // Header
        line = reader.readLine();

        if(!"Item".equals(line)) {
            throw new IOException("Wrong header: " + line);
        }

        // Version
        line = reader.readLine();

        if(!"v.1".equals(line)) {
            throw new IOException("Wrong version: " + line);
        }

        line = reader.readLine();
        key = line;

        int n;

        line = reader.readLine();
        n = Integer.parseInt(line);
        for(int i=0; i<n; i++) {
            line = reader.readLine();
            if(i < strings.length) {
                strings[i] = line;
            }
        }

        line = reader.readLine();
        n = Integer.parseInt(line);
        for(int i=0; i<n; i++) {
            line = reader.readLine();
            if(i < ints.length) {
                ints[i] = Integer.parseInt(line);
            }
        }

        line = reader.readLine();
        n = Integer.parseInt(line);
        for(int i=0; i<n; i++) {
            if(i < triplets.length) {
                triplets[i].read(reader);
            } else {
                reader.readLine();
            }
        }
    }