Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- .../src/org/spearce/jgit/diff/RawText.java | 28 +++++++++++++++++++- 1 files changed, 27 insertions(+), 1 deletions(-) diff --git a/org.spearce.jgit/src/org/spearce/jgit/diff/RawText.java b/org.spearce.jgit/src/org/spearce/jgit/diff/RawText.java index 9886d36..15d1c12 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/diff/RawText.java +++ b/org.spearce.jgit/src/org/spearce/jgit/diff/RawText.java @@ -38,6 +38,8 @@ package org.spearce.jgit.diff; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; @@ -81,6 +83,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 @@ -181,4 +195,16 @@ protected int hashLine(final byte[] raw, int ptr, final int end) { hash = (hash << 5) ^ (raw[ptr] & 0xff); return hash; } -} \ No newline at end of file + + 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; + } +} -- 1.6.4.297.gcb4cc -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html