Thank you for this code. Suggest revising the constructor and other methods to throw IOException; i.e., remove all try-catch blocks. A library should not catch any exceptions, just let them bubble up so I can deal with them most appropriately in my code. As currently written I can't detect whether the constructor succeeded!