1

一部のWebサイトで共有されたときにJPEGファイルを正しく機能させるには、ヘッダー情報を追加する必要があります。多くの16進法を使用して正しい情報を追跡しましたが、今では取得しようとして立ち往生しています。ファイルに入れます。ファイルのどこに移動する必要があるか、またその長さもわかっています。問題は、RandomAccessFileがファイル内の既存のデータを上書きし、FileOutputStreamがデータを最後に追加することです。どちらも必要ありません。3バイト目からデータを挿入します。

私のサンプルコード:

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

上書きされて挿入されないため、これは機能しません。ファイルにデータを挿入する方法が見つかりません。

4

2 に答える 2

3

ファイルのコピーを書き直して、データを目的の場所に挿入します。またはOutputStream、たとえばHTTP応答の送信中にオンザフライでデータを実行する場合は、データを挿入するを記述します。

于 2010-03-15T19:38:11.530 に答える
0

OutputSteamとInputStreamを組み合わせて使用​​する必要があります。InputStreamを使用してファイルを読み取り、元のファイルから最初の2バイトを書き込みます。16進コンテンツを挿入してから、残りの入力ストリームを読み取り、OutputSteamに書き込みます。

読み取りに使用する方法:

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

書き込みに使用する方法:

public void write(byte b[], int off, int len) 
于 2010-03-15T19:49:42.177 に答える