Java를 사용하여 jpeg 파일에 16 진수 헤더 정보를 추가하십시오
-
20-09-2019 - |
문제
일부 웹 사이트에서 공유 할 때 제대로 작동하도록 jpeg 파일에 헤더 정보를 추가해야합니다. 파일로. 파일에서 어디로 가야하는지 알고 있으며, 그것이 얼마나 오래 걸리는지 알고 있습니다. 내 문제는 randomAccessFile이 파일에 기존 데이터를 덮어 쓰고 파일의 putputStream이 데이터를 끝에 추가한다는 것입니다. 또한 원하지 않습니다. 세 번째 바이트에서 시작하는 데이터를 삽입하고 싶습니다.
내 예제 코드 :
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();
따라서 이것은 덮어 쓰기로 인해 작동하지 않으며 삽입하지 않기 때문에 파일에 데이터를 삽입하는 방법을 찾을 수 없습니다.
해결책
출력을 사용하고 입력 스트림을 사용해야합니다. InputStream을 사용하여 파일을 읽고 원본 파일에서 첫 번째 바이트를 작성하십시오. 16 진 컨텐츠를 삽입 한 다음 나머지 입력 스트림의 읽기를 읽고 outputSteam에 씁니다.
읽기에 사용되는 방법 :
public int read(byte b[], int off, int len)
작성에 사용되는 방법 :
public void write(byte b[], int off, int len)
다른 팁
원하는 장소에 데이터를 삽입하는 파일의 사본을 다시 작성하십시오. 또는 쓰기 OutputStream
예를 들어 HTTP 응답과 같은 전송 중에 데이터를 수행하려면 데이터가 주입됩니다.
제휴하지 않습니다 StackOverflow