Pergunta

É possível alterar o conteúdo de um arquivo ao escrever para ele usando o FileWriter?
Preciso escrever constantes de dados na cabeça do arquivo e, se eu fizer isso, ele substitui o arquivo.
Que técnica devo usar para fazer isso ou devo fazer cópias do arquivo (com os novos dados no topo) em cada arquivo gravar?

Foi útil?

Solução

Se você deseja substituir certos bytes do arquivo e não outros, você pode usar procurar e escrever para fazê -lo. Se você deseja alterar o conteúdo de todos os bytes do arquivo (por exemplo, adicionando um byte único ao início do arquivo), você precisa gravar um novo arquivo e potencialmente renomeá -lo depois de escrevê -lo.

Pense na resposta para a pergunta "Qual será o conteúdo do byte no deslocamento X depois de terminar?". Se, para uma grande porcentagem dos valores possíveis de x, a resposta "não é o que costumava ser", você precisará de um novo arquivo.

Outras dicas

Em vez de nos contestar com a pergunta "Qual será o conteúdo do byte no deslocamento X depois de terminar?", Vamos mudar a mentalidade e perguntar por que o sistema de arquivos não pode ou talvez o firmware do disco rígido: a) Forneça outro modo de acessar o arquivo [digamos, em linha] b) Aumente o comprimento do arquivo pelo número de bytes adicionados na frente ou no meio ou mesmo no final c) Mova cada byte que começa a partir da travessia por as posições do NewContent.Length

Seria mais fácil e rápido lidar com essas operações no firmware do disco ou no nível de implementação do sistema de arquivos, em vez de deixar esse trabalho para o desenvolvedor de aplicativos. Espero que escritores de sistema de arquivos ou fornecedores de disco rígido ofereçam esse recurso em breve.

Atenciosamente, Samba

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