class MD5Digester {

	@Nullable
	public String digestFileAs32ByteHex(@Nonnull File file) {
		requireNonNull(file, "Null file passed to MD5Digester.digestFileAs32ByteHex()");
		if (Files.isReadable(file.toPath())) {
			try (FileInputStream inStream = new FileInputStream(file)) {
				reset();
				byte[] inBytes = new byte[bufferSize];
				int inBytesRead;
				while ((inBytesRead = inStream.read(inBytes)) > 0) {
					update(inBytes, 0, inBytesRead);
				}

				return digestAs32ByteHex();
			} catch (final IOException ioexc) {
				Log.error("error digesting file: " + file.getPath() + "; exception follows...");
				Log.exception(ioexc);
			}
		}
		return null;
	}

	public  MD5Digester();
	public  MD5Digester(@Nonnull int bufferSize);

}