Por que o Windows não está avisando sobre o arquivo em uso para certos programas?

5

Quando você abre um arquivo de texto no Bloco de notas no Windows, pode mover o arquivo de origem para a Lixeira ou até excluí-lo permanentemente. O mesmo é verdadeiro para o WordPad. Por que o Windows não lhe avisa, reclamando que o arquivo está sendo aberto em outro programa?

No entanto, se o mesmo arquivo estiver aberto no Word e você tentar mover o arquivo de origem para a lixeira ou excluí-lo permanentemente, o Windows emitirá um aviso. A mensagem em si pode ser um tipo de mensagem de aviso, informando que algum programa (muitas vezes desconhecido) tem o arquivo aberto. No caso do Word 2013 no Windows 8.1, esta é uma mensagem informativa, informando exatamente qual programa (Word) tem o arquivo aberto.

Porqueisso?PorqueéquevocêpodeA)excluiroarquivodeorigemenquantoeleestáabertoemumprograma,eB)continuartrabalhandonodocumentoapósoarquivotersidoexcluído?PorqueocomportamentoédiferentenoBlocodeNotasenoWordPaddaqueledoWord?

O primeiro comportamento de caso existe no Paint também. Você pode excluir um arquivo de bitmap enquanto ele estiver aberto no Paint e continuar trabalhando. Mas quando você tenta salvá-lo, você é solicitado a inserir o local do arquivo para salvá-lo. Com o Bloco de Notas, ele salva diretamente no mesmo local em que o arquivo original foi armazenado e fornece o mesmo nome. O bloco de notas não solicita isso.

Eu não testei isso no Windows 7, Vista ou XP. No entanto, eu esperaria que o comportamento fosse exatamente o mesmo e, assim, a pergunta provavelmente se aplicaria a esses sistemas também.

    
por Samir 16.12.2014 / 20:19

2 respostas

5

Nem todos os programas bloqueiam arquivos quando abertos para edição

  • O Windows possui dois tipos de bloqueios de arquivos, bloqueios compartilhados e bloqueios exclusivos. Os bloqueios compartilhados permitem que outros programas leiam o arquivo, mas negam acesso de gravação a outros programas. Bloqueios exclusivos impedem que outros programas acessem o arquivo por completo. Um programa pode usar qualquer tipo de bloqueio, conforme necessário.

  • Os programas podem "abrir" arquivos para edição, mas não bloqueá-los. O que realmente acontece aqui é que o arquivo é carregado em um buffer na memória e o status do arquivo não é verificado até que seja operado novamente. Um arquivo "aberto" dessa forma não está realmente em usar e pode ser manipulado livremente por outros programas ou pelo próprio sistema, que permite continuar editando o arquivo inexistente e salvá-lo em um novo arquivo.

  • O bloco de notas não bloqueia o arquivo aberto, o que significa que o arquivo pode ser excluído enquanto está aberto no Bloco de notas e o programa não notará que o arquivo foi excluído até tentar abri-lo novamente. Da mesma forma, o Paint não bloqueia o arquivo e apenas percebe que o arquivo é excluído quando ele tenta abrir ou salvá-lo.

  • O Word, por outro lado, bloqueia documentos quando os abre ( edit: da minha pesquisa, parece que o bloqueio é exclusivo apenas quando o Word está lendo ou gravando no arquivo e é compartilhado do contrário ). Como resultado, você não pode excluir arquivos que estão atualmente abertos no Word.

Abrir um arquivo sem bloqueá-lo pode ser arriscado

  • Embora seja simples apenas carregar o arquivo na memória e não tocá-lo até que seja necessário, fazê-lo sem bloqueá-lo implica o risco de um condição de corrida onde um programa pode editar o arquivo sem que as alterações sejam refletidas em outro problema. Esse outro programa (que pode muito bem ser o Bloco de Notas ou o Paint) não verá as alterações e elas serão perdidas quando você salvar o arquivo nesse programa.

  • Esse risco de condições de corrida é o motivo pelo qual o Microsoft Word (e outros programas do Office) bloqueiam arquivos quando eles são abertos. Por outro lado, como exemplo de uma solução alternativa, o Notepad ++ não bloqueia arquivos abertos para que outros programas possam continuar manipulá-los. No entanto, ele avisará ao usuário se ele detectar que o arquivo foi alterado ou excluído, perguntando ao usuário se deve recarregar o arquivo do disco ou fechá-lo, respectivamente - essas duas ações descartariam as alterações do usuário.

por 20.12.2014 / 20:44
0

É porque alguns programas fazem uma cópia do arquivo e abrem esse arquivo em vez do original. Dessa forma, você pode excluir o arquivo original sem um erro, já que ele não está sendo usado por nenhum programa.

    
por 16.12.2014 / 20:24