Excluir itens de uma pasta

12/08/2008

0

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

Paulo

Responder

Posts

12/08/2008

Martins

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.


Responder

12/08/2008

Carlosrm

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


Responder

13/08/2008

Thiago Vidal

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í.

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;



Responder

14/08/2008

Paulo

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!!!!!


Responder

14/08/2008

Martins

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.


Responder

15/08/2008

Paulo

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.


Responder

20/09/2022

Rafael Vilela

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í.

[code:1:a175611496]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;
[/code:1:a175611496]




Por acaso tiveram problema para excluir diretórios com longo path?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar