문제

일부 웹 사이트에서 공유 할 때 제대로 작동하도록 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 응답과 같은 전송 중에 데이터를 수행하려면 데이터가 주입됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top