Pergunta

Eu tenho um aplicativo que pode fazer imagens modificadas. Em alguns casos, isso torna o tamanho do arquivo menor, em alguns casos maior.

O programa não tem a opção de "não substituir o arquivo se o resultado tiver um tamanho maior".

Então, escrevi um pequeno aplicativo C# para tentar resolver isso.

Em vez de substituir os arquivos, faço o aplicativo escrever o resultado em uma pasta sob a atual e nomear o teste da pasta.

O aplicativo C# que escrevi compara agarra o conteúdo das duas pastas e coloca o caminho completo para o (s) arquivo (s) em dois objetos da lista. Eu então comparo e substituo.

A substituição não está funcionando, no entanto. Eu recebo a seguinte ioexception:

Incapaz de remover o arquivo a ser substituído

A localização está em um dígito externo, no qual tenho todos os direitos.

Agora, eu sei que posso simplesmente fazer file.delete e file.move nessa ordem, mas essa exceção me interessou Por quê Esta configuração específica não funciona.

Aqui está o código -fonte: http://pastebin.com/4vq82umu

E sim, o arquivo especificado como último argumento da função de substituição existe.

Foi útil?

Solução

Verifique se seu arquivo a ser substituído não está carregado na memória, que pode estar causando um bloqueio no arquivo

Tente usar a instrução usando para descartar automaticamente o recurso,

De acordo com a documentação:

Se DestinationBackupFileName estiver em uma unidade diferente, ele não será removido como a documentação declara, em vez disso, uma ioexception será lançada com a mensagem "Não é possível remover o arquivo a ser substituído". é jogado

http://msdn.microsoft.com/en-us/library/9d9h163f.aspx

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