2010-03-15 45 views
1

爲了使它在某些網站上共享時能夠正常工作,我需要將標題信息添加到JPEG文件,我通過大量六角挖掘追蹤了正確的信息,但現在我有點卡住試圖把它放到文件中。我知道它需要去哪裏,我知道它有多長,我的問題是RandomAccessFile只是覆蓋文件中的現有數據,而FileOutputStream會將數據追加到最後。我也不想要,我想從第三個字節開始插入數據。使用Java將十六進制標題信息添加到JPEG文件

我的示例代碼:

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(); 

所以這不起作用,因爲它會覆蓋,並不會插入,我找不到任何辦法,只是將數據插入文件

回答

0

您將需要一起使用OutputSteam和InputStream。使用InputStream讀取文件並從原始文件中寫入前2個字節。插入您的十六進制內容,然後讀取輸入流的其餘部分並寫入OutputSteam。用於閱讀

方法:

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

方法用於書寫:

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

改寫將數據插入到所需位置的文件副本。或者編寫一個OutputStream,如果您想在傳輸過程中實時發送數據(例如,HTTP響應),則會寫入數據。

相關問題