¿Por qué Windows no advierte sobre el archivo en uso para ciertos programas?

5

Cuando abre un archivo de texto en el Bloc de notas en Windows, puede mover el archivo de origen a la Papelera de reciclaje o incluso eliminarlo permanentemente. Lo mismo es cierto para WordPad. ¿Por qué Windows no le da una advertencia y se queja de que el archivo está abierto en otro programa?

Sin embargo, si el mismo archivo está abierto en Word e intenta mover el archivo fuente a la papelera de reciclaje o eliminarlo permanentemente, Windows le avisa. El mensaje en sí puede ser un tipo de mensaje de advertencia, que le indica que algún programa (a menudo desconocido) tiene el archivo abierto. En el caso de Word 2013 en Windows 8.1, este es un mensaje de información que le dice exactamente qué programa (Word) tiene abierto el archivo.

Bloc de notas del archivo archivo abierto de bloc de notas

¿Porqué es eso? ¿Por qué puede A) eliminar el archivo fuente mientras está abierto en un programa, y ​​B) continuar trabajando en el documento después de que el archivo se haya eliminado? ¿Por qué el comportamiento en Notepad y WordPad es diferente al de Word?

word del file archivo abierto de Word

El comportamiento del primer caso también existe en Paint. Puede eliminar un archivo de mapa de bits mientras está abierto en Paint y continuar trabajando. Pero cuando intenta guardarlo, se le solicita la ubicación del archivo para guardarlo. Con el Bloc de notas, lo guarda directamente en la misma ubicación en la que se almacenó el archivo original y le da el mismo nombre. El Bloc de notas no te pide eso.

No he probado esto en Windows 7, Vista o XP. Sin embargo, esperaría que el comportamiento sea exactamente el mismo, por lo que la pregunta probablemente también se aplicaría a esos sistemas.

Samir
fuente
2
Se trata de si el programa mantiene el archivo abierto mientras lo editas o no. A menudo no lo hacen; leen una copia en la memoria y dejan caer la conexión del archivo mientras la editas. Cuando va a guardarlo, crea una nueva conexión al identificador de archivo. Esto depende del programa, no de Windows.
Ƭᴇcʜιᴇ007
Entonces, en este caso, Word mantiene abierto el archivo original; Bloc de notas no? Pero Word hace una copia oculta del archivo original cuando lo abre. Como algún tipo de archivo temporal. ¿No es ese el archivo en el que Word está guardando los cambios? Y luego, al salir, combina los cambios con el archivo original y descarta el archivo temporal. Si es así, debería ser posible eliminar el archivo original mientras está abierto en Word.
Samir
Esto se debe a que Word está tratando de rastrear los cambios mientras usted (o cualquier persona) lo está editando, y si dos personas hicieron cambios y luego fusionaron los archivos de cada usuario nuevamente, solo los cambios realizados por el último editor para guardar se mantendrían. Al bloc de notas por otro lado (por ejemplo) no le importa. :)
Ƭᴇcʜιᴇ007
Estoy bastante sorprendido de que el bloc de notas le permita eliminar o mover el archivo mientras está abierto, pero la aplicación controla eso, y en el caso de los blocs de notas, es un programa tan simple que no intenta ningún control de concurrencia y abre el archivo en modo de lectura, y luego carga la memoria, liberando el bloqueo de lectura. Para obtener más información sobre lo que está sucediendo con otros archivos, consulte esto: superuser.com/questions/848782/…
Frank Thomas
Entonces, ¿el Bloc de notas aplica un bloqueo de lectura y luego lo libera justo después de que se ha cargado en la memoria primaria? Entonces, ¿esto permitirá la llamada "actualización intercesora"? ¿Mientras Word aplica un bloqueo de escritura y lo libera solo después de que el archivo se haya cerrado? @FrankThomas Gracias por el enlace! ¿Es cierto entonces que Word 2013 usa archivos temporales "transaccionados"? En otras palabras, en realidad funciona en el archivo temporal que hace, y cuando se guardan los cambios, elimina el archivo original y guarda el estado actual del documento en un archivo con el mismo nombre que el original.
Samir

Respuestas:

5

No todos los programas bloquean archivos cuando se abren para editar

  • Windows tiene dos tipos de bloqueos de archivos, bloqueos compartidos y bloqueos exclusivos. Los bloqueos compartidos permiten que otros programas lean el archivo pero niegan el acceso de escritura a otros programas. Los bloqueos exclusivos evitan que otros programas accedan al archivo por completo. Un programa puede usar cualquier tipo de bloqueo según sea necesario.

  • Los programas pueden "abrir" archivos para editarlos pero no bloquearlos. Lo que realmente sucede aquí es que el archivo se carga en un búfer en la memoria y el estado del archivo no se verifica hasta que se vuelve a operar. Un archivo "abierto" de esta manera no está realmente en uso y puede ser manipulado libremente por otros programas o por el propio sistema, lo que le permite continuar editando el archivo inexistente y guardarlo en un nuevo archivo.

  • El Bloc de notas no bloquea el archivo abierto, lo que significa que el archivo se puede eliminar mientras está abierto en el Bloc de notas y el programa no notará que el archivo se elimina hasta que intente abrirlo nuevamente. Del mismo modo, Paint no bloquea el archivo y solo nota que el archivo se elimina cuando intenta abrirlo o guardarlo.

  • Word, por otro lado, bloquea los documentos cuando los abre ( editar: según mi investigación, parece que el bloqueo es exclusivo solo cuando Word lee o escribe en el archivo, y se comparte de otra manera ). Como resultado, no puede eliminar archivos que están actualmente abiertos en Word.

Abrir un archivo sin bloquearlo puede ser arriesgado

  • Aunque es simple cargar el archivo en la memoria y no tocarlo hasta que sea necesario, hacerlo sin bloquearlo conlleva el riesgo de una condición de carrera en la que un programa puede editar el archivo sin que los cambios se reflejen en otro problema. Ese otro programa (que bien podría ser Notepad o Paint) no verá los cambios, y se perderán cuando guarde el archivo en ese programa.

  • Este riesgo de condiciones de carrera es la razón por la cual Microsoft Word (y otros programas de Office) bloquean los archivos cuando los abren. Por otro lado, como ejemplo de una solución alternativa, Notepad ++ no bloquea los archivos abiertos para que otros programas puedan continuar manipulándolos. Sin embargo, advertirá al usuario si detecta que el archivo ha cambiado o se ha eliminado, y le preguntará si debe volver a cargar el archivo desde el disco o cerrarlo, respectivamente. Ambas acciones descartarían los cambios del usuario.

bwDraco
fuente
0

Es porque algunos programas hacen una copia del archivo y lo abren en lugar del original. De esa manera, puede eliminar el archivo original sin errores, ya que ningún programa lo está utilizando.

Behdad
fuente
Sí, entonces lo noté. Word hace una copia temporal del archivo original cuando lo abre. ¿Es eso lo que quieres decir? Pero Word no me permite eliminar el archivo original, incluso cuando ha creado una copia temporal.
Samir
No dije nada sobre ninguna aplicación en particular. Si te refieres al archivo oculto que Word crea al abrir archivos, supongo que es para fines de respaldo automático. En realidad, abre el archivo original, ya que, como mencionó, no puede eliminar el archivo cuando está abierto en Word.
Behdad