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:
parent
1a03c864a6
commit
e34865b88b
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue