Browse Source

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>
stable-0.7
Johannes Schindelin 15 years ago committed by Shawn O. Pearce
parent
commit
e34865b88b
  1. 26
      org.eclipse.jgit/src/org/eclipse/jgit/diff/RawText.java

26
org.eclipse.jgit/src/org/eclipse/jgit/diff/RawText.java

@ -44,6 +44,8 @@
package org.eclipse.jgit.diff; package org.eclipse.jgit.diff;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
@ -87,6 +89,18 @@ public class RawText implements Sequence {
hashes = computeHashes(); 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() { public int size() {
// The line map is always 2 entries larger than the number of lines in // 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 // the file. Index 0 is padded out/unused. The last index is the total
@ -187,4 +201,16 @@ public class RawText implements Sequence {
hash = (hash << 5) ^ (raw[ptr] & 0xff); hash = (hash << 5) ^ (raw[ptr] & 0xff);
return hash; 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…
Cancel
Save