Excluir itens de uma pasta
Crio uma pasta, extraio um arquivo binário, gero um txt, varro esse txt e depois eu gravo em banco aquilo que me interessa. pergunta: Como faço, para depois disso tudo, limpar esta pasta, não deixar nada? Grato!!!
Paulo
Curtidas 0
Respostas
Martins
12/08/2008
Crio uma pasta, extraio um arquivo binário, gero um txt, varro esse txt e depois eu gravo em banco aquilo que me interessa. pergunta: Como faço, para depois disso tudo, limpar esta pasta, não deixar nada? Grato!!!
Já tentou usar a função [b:aaaa268d84]DeleteFile[/b:aaaa268d84]?
Boa sorte e bons códigos.
GOSTEI 0
Carlosrm
12/08/2008
Paulo,
apenas complementando a resposta do Martins, se quiser também deletar a Pasta (ou diretório, como era chamado antigamente), no Delphi 7 você pode usar a função RemoveDir. Porém, esta função só apaga diretórios que estejam vazios. Então, realmente será necessário usar o DeleteFile, como lembrou o Martins, para primeiro apagar cada um dos arquivos que estiverem na pasta/diretório a deletar. Por último, não confie plenamente na segurança dos arquivos/pasta apagados. Em algumas situações eles podem ser recuperados. Eu acho mais prudente alterar o conteúdo dos arquivos, antes de apagá-los. Se alguém recuperá-los, vai encontrar informação não aproveitável...
carlosrm
apenas complementando a resposta do Martins, se quiser também deletar a Pasta (ou diretório, como era chamado antigamente), no Delphi 7 você pode usar a função RemoveDir. Porém, esta função só apaga diretórios que estejam vazios. Então, realmente será necessário usar o DeleteFile, como lembrou o Martins, para primeiro apagar cada um dos arquivos que estiverem na pasta/diretório a deletar. Por último, não confie plenamente na segurança dos arquivos/pasta apagados. Em algumas situações eles podem ser recuperados. Eu acho mais prudente alterar o conteúdo dos arquivos, antes de apagá-los. Se alguém recuperá-los, vai encontrar informação não aproveitável...
carlosrm
GOSTEI 0
Thiago Vidal
12/08/2008
Cara, tive um problema parecido; escrevi uma função que apaga todos os arquivos e subpastas recursivamente de um determinado caminho.
Segue o código, talvez vc tenha que adaptar alguma coisa aí.
Segue o código, talvez vc tenha que adaptar alguma coisa aí.
function RecursiveDelete(FullPath: string): Boolean; var sr: TSearchRec; FullName: string; begin Result := True; if (FindFirst(FullPath + ´\*.*´, faAnyFile, sr) = 0) then try repeat FullName := IncludeTrailingPathDelimiter(FullPath) + sr.Name; if (sr.Name <> ´.´) and (sr.Name <> ´..´) then begin if ((sr.Attr and faDirectory) = 0) then Result := DeleteFile(FullName) else Result := RecursiveDelete(FullName); end; until (FindNext(sr) <> 0) or not Result; finally FindClose(sr); end; Result := Result and DirectoryExists(FullPath) and RemoveDir(FullPath); end;
GOSTEI 0
Paulo
12/08/2008
Thiago, era exatamente isso. A única adaptação que tive que fazer, foi no RemoveDir, pois eu precisava apenas limpar a pasta e não removê-la. Martins, eu não usei o DeleteFile, porque para usar o DeleteFile é preciso informar o Path + Nome do Arquivo + Extensão, mas mesmo assim, agradeço a todos, agradeço mesmo. Valeu!!!!!
GOSTEI 0
Martins
12/08/2008
Thiago, era exatamente isso. A única adaptação que tive que fazer, foi no RemoveDir, pois eu precisava apenas limpar a pasta e não removê-la. Martins, eu não usei o DeleteFile, porque para usar o DeleteFile é preciso informar o Path + Nome do Arquivo + Extensão, mas mesmo assim, agradeço a todos, agradeço mesmo. Valeu!!!!!
Sem problemas [b:f8743f04b1]Paulo[/b:f8743f04b1], mas veja q a função o utiliza.
if ((sr.Attr and faDirectory) = 0) then Result := DeleteFile(FullName)
Mesmo assim, bons códigos e boa sorte.
GOSTEI 0
Paulo
12/08/2008
Olá Martins, o que eu quiz dizer é que eu já havia utilizado o DeleteFile e sempre estava informando o Nome e a Extensão do arquivo. Confesso que não me atentei a essa linha do código, mas valeu assim mesmo.
GOSTEI 0
Rafael Vilela
12/08/2008
Cara, tive um problema parecido; escrevi uma função que apaga todos os arquivos e subpastas recursivamente de um determinado caminho.
Segue o código, talvez vc tenha que adaptar alguma coisa aí.
Segue o código, talvez vc tenha que adaptar alguma coisa aí.
function RecursiveDelete(FullPath: string): Boolean; var sr: TSearchRec; FullName: string; begin Result := True; if (FindFirst(FullPath + ´\\*.*´, faAnyFile, sr) = 0) then try repeat FullName := IncludeTrailingPathDelimiter(FullPath) + sr.Name; if (sr.Name <> ´.´) and (sr.Name <> ´..´) then begin if ((sr.Attr and faDirectory) = 0) then Result := DeleteFile(FullName) else Result := RecursiveDelete(FullName); end; until (FindNext(sr) <> 0) or not Result; finally FindClose(sr); end; Result := Result and DirectoryExists(FullPath) and RemoveDir(FullPath); end;
Por acaso tiveram problema para excluir diretórios com longo path?
GOSTEI 0