System.out.println("len " + l);
    private void init() throws IOException {        int i, j;        byte [] delim = new byte[3];        byte [] buf = new byte[SEGMENT_RECORD_LENGTH];	if (file == null) {	    // distributed service only	    for (i = 0; i < 233;i++){		hashmapcountryCodetoindex.put(countryCode[i],new Integer(i));		hashmapcountryNametoindex.put(countryName[i],new Integer(i));	    }	    return;	}	file.seek(file.length() - 3);        for (i = 0; i < STRUCTURE_INFO_MAX_SIZE; i++) {            file.read(delim);            if (delim[0] == -1 && delim[1] == -1 && delim[2] == -1) {                databaseType = file.readByte();                if (databaseType >= 106) {                    // Backward compatibility with databases from April 2003 and earlier                    databaseType -= 105;                }                // Determine the database type.                if (databaseType == DatabaseInfo.REGION_EDITION_REV0) {                    databaseSegments = new int[1];                    databaseSegments[0] = STATE_BEGIN_REV0;                    recordLength = STANDARD_RECORD_LENGTH;                }else if (databaseType == DatabaseInfo.REGION_EDITION_REV1){                    databaseSegments = new int[1];                    databaseSegments[0] = STATE_BEGIN_REV1;                    recordLength = STANDARD_RECORD_LENGTH;		}                else if (databaseType == DatabaseInfo.CITY_EDITION_REV0 ||			 databaseType == DatabaseInfo.CITY_EDITION_REV1 ||			 databaseType == DatabaseInfo.ORG_EDITION ||			 databaseType == DatabaseInfo.ISP_EDITION ||			 databaseType == DatabaseInfo.ASNUM_EDITION) {			databaseSegments = new int[1];			databaseSegments[0] = 0;			if (databaseType == DatabaseInfo.CITY_EDITION_REV0 ||			    databaseType == DatabaseInfo.CITY_EDITION_REV1) {			    recordLength = STANDARD_RECORD_LENGTH;			}			else {			    recordLength = ORG_RECORD_LENGTH;			}			file.read(buf);			for (j = 0; j < SEGMENT_RECORD_LENGTH; j++) {			    databaseSegments[0] += (unsignedByteToInt(buf[j]) << (j * 8));			}		    }                break;            }            else {                file.seek(file.getFilePointer() - 4);            }        }        if ((databaseType == DatabaseInfo.COUNTRY_EDITION) |	    (databaseType == DatabaseInfo.PROXY_EDITION) |	    (databaseType == DatabaseInfo.NETSPEED_EDITION)) {            databaseSegments = new int[1];            databaseSegments[0] = COUNTRY_BEGIN;            recordLength = STANDARD_RECORD_LENGTH;        }        if ((dboptions & GEOIP_MEMORY_CACHE) == 1) {	    int l = (int) file.length();	    dbbuffer = new byte[l];	    file.seek(0);	    file.read(dbbuffer,0,l);	    databaseInfo = this.getDatabaseInfo();	    file.close();	}        if ((dboptions & GEOIP_INDEX_CACHE) != 0) {          int l = databaseSegments[0] * recordLength * 2;          System.out.println("len " + l);          index_cache = new byte[l];          if (index_cache != null){            file.seek(0);            file.read(index_cache,0,l);               }                  } else {          index_cache = null;        }     }