Alterar os bytes de um arquivo

5 respostas
R

Oi, estou trabalhando em uma proteção(bem simples) de arquivo(vídeo) , como o arquivo e grande, ao invés de criptografar o arquivo inteiro, quero apenas alterar os primeiros bytes do arquivo, mas não estou conseguindo, ao invés de alterar estou sobrescrevendo o conteudo do arquivo.

File SDCardRoot = Environment.getExternalStorageDirectory();
	File file = new File(SDCardRoot,"video01.mp4");
	byte b2[] = new byte[3];
	b2[0]=(byte)0;
	b2[1]=(byte)0;
	b2[2]=(byte)0;
	OutputStream arquivo2 = new FileOutputStream(file);
	BufferedOutputStream biss = new BufferedOutputStream(arquivo2);
	biss.write(b2, 0, 3);
	biss.close();

5 Respostas

ViniGodoy

Não tem como simplesmente alterar alguns bytes do arquivo usando Streams. Você precisa criar um novo arquivo, gravar os bytes modificados, e em seguida, gravar o conteúdo do arquivo original.

Talvez uma classe que faça o que você quer sem tanto trabalho é a RandomAccessFile. Eu só usei isso para ler dados, nunca para escrever, mas talvez valha a pena pesquisar um pouco.

R

Valeu!
vou tentar!

alucardeck

É isso ai, somente com o RandomAccessFile mesmo.

Usei ele uma vez e deu certo, algo assim:

File f = new File("t.txt"); // com texto: TESTERANDOM RandomAccessFile file = new RandomAccessFile(f,"rw"); file.seek(3); file.write("123".getBytes());

o arquivo fica:

TES123ANDOM

R

Obrigado!
Deucerto!

D

Isso deixa mais rápido que usando o AESCrypt?

Criado 20 de abril de 2011
Ultima resposta 16 de mar. de 2012
Respostas 5
Participantes 4