Crypto hashing can now skip into a file before it starts

This commit is contained in:
nathan 2017-10-20 21:59:49 +02:00
parent 5388dcedd7
commit 031e027ed4
1 changed files with 9 additions and 3 deletions

View File

@ -118,7 +118,7 @@ class Crypto {
*/ */
public static public static
byte[] hashFile(File file, Digest digest, Logger logger) { byte[] hashFile(File file, Digest digest, Logger logger) {
return hashFile(file, digest, 0L, logger); return hashFile(file, digest, 0L, file.length(), logger);
} }
/** /**
@ -128,12 +128,18 @@ class Crypto {
* may be null, if no log output is necessary * may be null, if no log output is necessary
*/ */
public static public static
byte[] hashFile(File file, Digest digest, long lengthFromEnd, Logger logger) { byte[] hashFile(File file, Digest digest, long startPosition, long endPosition, Logger logger) {
if (file.isFile() && file.canRead()) { if (file.isFile() && file.canRead()) {
InputStream inputStream = null; InputStream inputStream = null;
try { try {
inputStream = new FileInputStream(file); inputStream = new FileInputStream(file);
long size = file.length(); long skip = inputStream.skip(startPosition);
if (skip != startPosition) {
throw new RuntimeException("Unable to skip " + startPosition + " bytes. Only skippped " + skip + " instead");
}
long size = file.length() - startPosition;
long lengthFromEnd = size - endPosition;
if (lengthFromEnd > 0 && lengthFromEnd < size) { if (lengthFromEnd > 0 && lengthFromEnd < size) {
size -= lengthFromEnd; size -= lengthFromEnd;