Exclui os primeiros n bytes de um arquivo no tempo O (n)

1

Eu tenho procurado por uma solução para um projeto pessoal (leia: um experimento de codificação), mas nada parece se encaixar. Para ser sincero, nem sei se é possível.

Agora, simplesmente não há como fazer isso com base no arquivo inteiro. Qualquer coisa que seja baseada em escrever um novo arquivo sem os primeiros n bytes, mesmo que esteja no lugar, obviamente não funcionará. A única coisa em que consigo pensar é de alguma forma dizer ao sistema de arquivos que o começo do arquivo está mais adiantado e eliminando o começo dele.

Mas, como eu disse, nem tenho certeza se é possível.

    
por Steven Armstrong 01.07.2015 / 10:21

1 resposta

0

Quando você exclui bytes de um arquivo, é necessário reescrevê-lo. Esse será O (L) tempo em que L é o tamanho do arquivo. Você nunca alcançará O (n) em um sistema de arquivos sadio.

Você pode alcançar < O(n) quando n for divisível pelo tamanho do bloco de sistemas de arquivos, pois essa operação removerá apenas alguns inodes reservados da entrada de diretório. (No caso ideal, onde um programa faz exatamente isso!)

    
por 01.07.2015 / 10:32