Class DatabaseReader

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    public class DatabaseReader
    extends Object
    implements Closeable
    Modified and simplified for I2P

    The class DatabaseReader provides a reader for the GeoIP2 database format.

    Usage

    To use the database API, you must create a new DatabaseReader using the DatabaseReader.Builder. You must provide the Builder constructor either an InputStream or File for your GeoIP2 database. You may also specify the fileMode and the locales fallback order using the methods on the Builder object. After you have created the DatabaseReader, you may then call the appropriate method (e.g., city) for your database, passing it the IP address you want to look up.

    If the lookup succeeds, the method call will return a response class for the GeoIP2 lookup. The class in turn contains multiple record classes, each of which represents part of the data returned by the database.

    We recommend reusing the DatabaseReader object rather than creating a new one for each lookup. The creation of this object is relatively expensive as it must read in metadata for the file. It is safe to share the object across threads.

    Caching

    The database API supports pluggable caching (by default, no caching is performed). A simple implementation is provided by com.maxmind.db.CHMCache. Using this cache, lookup performance is significantly improved at the cost of a small (~2MB) memory overhead.

    Since:
    0.9.38
    • Method Detail

      • close

        public void close()
                   throws IOException

        Closes the database.

        If you are using FileMode.MEMORY_MAPPED, this will not unmap the underlying file due to a limitation in Java's MappedByteBuffer. It will however set the reference to the buffer to null, allowing the garbage collector to collect it.

        Specified by:
        close in interface AutoCloseable
        Specified by:
        close in interface Closeable
        Throws:
        IOException - if an I/O error occurs.
      • countryToIP

        public void countryToIP​(String country,
                                Writer out)
                         throws IOException
        I2P - Write all IPv4 address ranges for the given country to out.
        Parameters:
        country - two-letter case-insensitive
        out - caller must close
        Throws:
        IOException
        Since:
        0.9.48
      • getMetadata

        public Metadata getMetadata()
        Returns:
        the metadata for the open MaxMind DB file.