Track and seek to the current position in RandomAccessFileOutputStream

This commit is contained in:
Ben Gruver 2012-12-28 17:40:46 -08:00
parent b85cfe5cc8
commit 3d0419c963
2 changed files with 10 additions and 2 deletions

View File

@ -233,7 +233,7 @@ public class DexFile {
}
private static DexWriter outputAt(RandomAccessFile raf, int filePosition) throws IOException {
return new DexWriter(new RandomAccessFileOutputStream(raf), filePosition);
return new DexWriter(new RandomAccessFileOutputStream(raf, filePosition), filePosition);
}
public static void writeTo(@Nonnull String path, @Nonnull org.jf.dexlib2.iface.DexFile input) throws IOException {

View File

@ -37,21 +37,29 @@ import java.io.OutputStream;
import java.io.RandomAccessFile;
public class RandomAccessFileOutputStream extends OutputStream {
private int filePosition;
@Nonnull private final RandomAccessFile raf;
public RandomAccessFileOutputStream(@Nonnull RandomAccessFile raf) {
public RandomAccessFileOutputStream(@Nonnull RandomAccessFile raf, int startFilePosition) {
this.filePosition = startFilePosition;
this.raf = raf;
}
@Override public void write(int b) throws IOException {
raf.seek(filePosition);
filePosition++;
raf.write(b);
}
@Override public void write(byte[] b) throws IOException {
raf.seek(filePosition);
filePosition += b.length;
raf.write(b);
}
@Override public void write(byte[] b, int off, int len) throws IOException {
raf.seek(filePosition);
filePosition += len;
raf.write(b, off, len);
}
}