El "problema" se reduce a cómo los archivos se escriben en el medio de almacenamiento byte a byte.
En su representación más básica, un archivo no es más que una serie de bytes escritos en el disco (también conocido como medio de almacenamiento). Entonces su cadena original se ve así:
Address Value
0x00 `a`
0x01 `a`
0x02 `a`
0x03 `b`
0x04 `d`
0x05 `d`
0x06 `d`
Y desea insertar C
en la posición 0x04. Eso requiere desplazar los bytes 4 - 6 hacia abajo un byte para que pueda insertar el nuevo valor. Si no lo hace, sobrescribirá el valor que actualmente está en 0x04, que no es lo que desea.
Address Value
0x00 `a`
0x01 `a`
0x02 `a`
0x03 `b`
0x04 `C`
0x05 `d`
0x06 `d`
0x07 `d`
Entonces, la razón por la que tiene que volver a escribir la cola del archivo después de insertar un nuevo valor es porque no hay espacio dentro del archivo para aceptar el valor insertado. De lo contrario, sobrescribiría lo que había allí.
Anexo 1 : Si desea reemplazar el valor de b
con, C
entonces no necesita volver a escribir la cola de la cadena. Reemplazar un valor con un valor de tamaño similar no requiere una reescritura.
La adición 2 : Si desea reemplazar la cadena ab
con el C
entonces tendría necesidad de volver a escribir el resto del archivo que se ha creado un vacío en el archivo.
Anexo 3 : Las construcciones de nivel de bloque fueron creadas para hacer más fácil el manejo de archivos grandes. En lugar de tener que encontrar 1 millón de espacio contiguo para su archivo, ahora solo necesita encontrar 1 millón de bloques disponibles para escribir en su lugar.
En teoría, podría construir un sistema de archivos que vincule byte a byte de forma similar a lo que proporcionan los bloques. Luego puede insertar un nuevo byte actualizando el | de punteros en el punto apropiado. Me arriesgaría a adivinar que el rendimiento en eso sería bastante pobre.
Como sugirió el Gran Maestro B , use una imagen de fichas de dominó apiladas para comprender visualmente cómo se representa el archivo.
No puede insertar otro dominó dentro de la línea de dominó sin hacer que todo se caiga. Tienes que crear el espacio para el nuevo dominó moviendo a los demás por la línea. Mover fichas de dominó por la línea equivale a volver a escribir la cola del archivo después del punto de inserción.