我需要的头信息添加到JPEG文件,以获得一些网站上共享时,它才能正常工作,我已经找到了通过大量的十六进制的挖掘准确的信息,但现在我有点卡住好一会才到文件中。我知道那里的文件中,它需要去,我知道它有多长,我的问题是,RandomAccessFile的只是覆盖文件中现有的数据和FileOutputStream中的数据追加到最后。我不想或者,我要插入的数据开始的第三个字节。

我的示例代码:

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

所以这不起作用,因为它会覆盖,并不会插入,我找不到任何办法,只是将数据插入文件

有帮助吗?

解决方案

您将需要使用OutputSteam和InputStream的串联。使用InputStream中读取文件,并从原始文件写入前2个字节。所述插入您十六进制的内容,然后读出的输入流的其余部分和写入OutputSteam。

要用于读

方法:

public int read(byte b[], int off, int len)
用于书写

方法:

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

其他提示

重写文件在所需位置将所述数据转换成它的副本。或写,如果你想这样做的即时传输的同时,也注入数据的OutputStream例如,HTTP响应。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top