/* * Copyright 2006 Bradley Schatz. All rights reserved. * * This file is part of pasco2, the next generation Internet Explorer cache * and history record parser. * * pasco2 is free software; you can redistribute it and/or modify * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * pasco2 is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with pasco2; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA */ package isi.pasco2.io; import isi.pasco2.util.StructConverter; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class EnhancedRandomAccessFile extends RandomAccessFile implements IndexFile { public EnhancedRandomAccessFile(File arg0, String arg1) throws FileNotFoundException { super(arg0, arg1); } public EnhancedRandomAccessFile(String arg0, String arg1) throws FileNotFoundException { super(arg0, arg1); } public int readLittleEndianInt() throws IOException { byte[] bytes = new byte[4]; read(bytes, 0, 4); return StructConverter.bytesIntoInt(bytes, 0); } public long readLittleEndianUInt() throws IOException { byte[] bytes = new byte[4]; read(bytes, 0, 4); return StructConverter.bytesIntoUInt(bytes, 0); } public int readLittleEndianShort() throws IOException { byte[] bytes = new byte[2]; read(bytes, 0, 2); return StructConverter.bytesIntoShort(bytes, 0); } void debug(byte[] bytes, int len) { for (int i = 0; i < len; i++) { System.out.print(Byte.toString(bytes[i]) + " "); } System.out.println(); } public char readAsciiChar() throws IOException { byte b = readByte(); return (char) b; } public String readStringAtOffset(long offset, int length) throws IOException { seek(offset); byte[] dn = new byte[length]; read(dn, 0, length); if (dn[0] == 0) { return new String(); } else { return new String(dn); } } public int readIntAtOffset(long offset) throws IOException { seek(offset); return readLittleEndianInt(); } public long readUIntAtOffset(long offset) throws IOException { seek(offset); return readLittleEndianUInt(); } public int readShortAtOffset(long offset) throws IOException { seek(offset); return readLittleEndianShort(); } }