Frage

Ich brauche Header Informationen in eine JPEG-Datei hinzuzufügen, um es richtig zur Arbeit zu kommen, wenn sie auf einigen Websites geteilt, ich auf den richtigen Informationen durch eine Menge von Hex graben verfolgt haben, aber jetzt ich bin ein bisschen stecken versuchen, es in die Datei zu erhalten. Ich weiß, wo in der Datei muss es gehen, und ich weiß, wie lang es ist, mein Problem ist, dass nur Randomüberschreibt bestehende Daten in der Datei und Fileoutputstream fügt die Daten an das Ende. Ich will auch nicht, ich will auf dem dritten Byte zu INSERT-Daten zu starten.

Mein Beispielcode:

File fileToChange = new File("someimage.jpg");

byte[] i = new byte[2];
i[0] = (byte)Integer.decode("0xcc");
i[1] = (byte)Integer.decode("0xcc");

RandomAccessFile f = 
    new RandomAccessFile(new File("videothing.jpg"), "rw");
long aPositionWhereIWantToGo = 2;
f.seek(aPositionWhereIWantToGo); // this basically reads n bytes in the file
f.write((byte[])i);
f.close();

So dies nicht funktioniert, weil es überschreibt, und legen Sie nicht, ich kann keinen Weg finden, um nur Einfügen von Daten in eine Datei

War es hilfreich?

Lösung

Sie müssen OutputSteam und Input im Tandem verwenden. Lesen Sie die Datei mit Input und schreibt ersten 2 Bytes aus der Originaldatei. Der Einsatz Ihres hexadezimalen Inhalt und dann liest Rest des Eingangsstroms und Schreiben in das OutputSteam.

Methode zum Lesen verwendet werden:

public int read(byte b[], int off, int len)

Methode zum Schreiben verwendet werden:

public void write(byte b[], int off, int len) 

Andere Tipps

Rewrite eine Kopie der Datei an der gewünschten Stelle die Daten in sie eingefügt wird. Oder schreiben Sie eine OutputStream dass einspritzt die Daten, wenn Sie es on-the-fly tun möchten, während Übertragung, beispielsweise eine HTTP-Antwort.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top