É possível definir um byte speicifc em um arquivo aleatório de volta ao nulo?

StackOverflow https://stackoverflow.com/questions/4406691

  •  25-09-2019
  •  | 
  •  

Pergunta

Origianlly, quando criei o RandomAccessFile, pulei alguns bytes para que aqueles fiquem nulos, mas agora preciso excluir alguns dos bytes que escrevi. No momento, o que estou fazendo é substituir o local com um espaço, mas há uma maneira de recuperá -lo para esvaziar?

EDIT: Como ele precisa conter um valor, gostaria de saber como colocá -lo de volta ao valor original que ele é atribuído por padrão quando for ignorado.

Foi útil?

Solução

Um arquivo não pode conter um byte "vazio". Cada byte no arquivo deve ter um valor entre 0 e 255.

Se você quiser "apagar" todos os bytes após um certo ponto, você pode usar RandomAccessFile.setLength que trunca o arquivo.


Em relação ao seu comentário: se você deseja colocar alguns bytes de volta ao seu valor original, sugiro que você encapsule um RandomAccessFile em sua própria classe com um mapa do índice ao valor do byte original, que você atualiza em cada chamada para write. Esta subclasse poderia então fornecer um método restore(int i) que restaura o valor do byte no índice i procurando o valor original no mapa.

Outras dicas

Não está extremamente claro o que você está tentando fazer, mas não pode "excluir" bytes desde o início ou o meio de um arquivo. Você pode geralmente truncar Um arquivo, mas você não pode remover bits do meio - normalmente criaria um novo arquivo, copiando apenas os dados desejados e, em seguida, renomearam os arquivos adequadamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top