Prepare RawText for diff-index and diff-files

Bug: 291083
Eclipse-CQ: 3559
Change-Id: Ia02f346a96b5f1e24f8bc9676bd428b968a41222
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Johannes Schindelin 2009-09-03 12:47:01 +02:00 committed by Shawn O. Pearce
parent 1a03c864a6
commit e34865b88b
1 changed files with 27 additions and 1 deletions

View File

@ -44,6 +44,8 @@
package org.eclipse.jgit.diff;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
@ -87,6 +89,18 @@ public RawText(final byte[] input) {
hashes = computeHashes();
}
/**
* Create a new sequence from a file.
* <p>
* The entire file contents are used.
*
* @param file
* the text file.
*/
public RawText(File file) throws IOException {
this(readFile(file));
}
public int size() {
// The line map is always 2 entries larger than the number of lines in
// the file. Index 0 is padded out/unused. The last index is the total
@ -187,4 +201,16 @@ protected int hashLine(final byte[] raw, int ptr, final int end) {
hash = (hash << 5) ^ (raw[ptr] & 0xff);
return hash;
}
}
private static byte[] readFile(File file) throws IOException {
byte[] result = new byte[(int)file.length()];
FileInputStream in = new FileInputStream(file);
for (int off = 0; off < result.length; ) {
int read = in.read(result, off, result.length - off);
if (read < 0)
throw new IOException("Early EOF");
off += read;
}
return result;
}
}