Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.214 Beiträge
 
Delphi 12 Athens
 
#5

Re: Datei sicher löschen

  Alt 29. Apr 2010, 16:37
*überleg*

Da beide Codes mit Dateien über 2, bzw. 4 GB Probleme haben ....
keinen


Ich würde jetzt auf die Schnelle 'nen Teil vom Letzeren etwas verändert verwenden:
Delphi-Quellcode:
procedure WipeFile(const FileName: string);
var
  buffer: array [0..8191] of Byte;
  i: Int64;
  fs: TFileStream;

begin
  fs := TFilestream.Create(FileName, fmOpenReadWrite or fmShareExclusive);
  try
    i := fs.Size;
    while i > 0 do
    begin
      fs.WriteBuffer(Buffer, SizeOf(buffer));
      Dec(i, SizeOf(buffer));
    end;
    FlushFileBuffers(fs.Handle);
  finally
    fs.Free;
  end;
  DeleteFile(FileName);
end;
und dann für größere Dateien noch ein bissl die Speicherverwaltung/WindowsFileCache optimieren:
Delphi-Quellcode:
procedure WipeFile(const FileName: string);
var
  buffer: array [0..8191] of Byte;
  i: Int64;
  fs: TFileStream;

begin
  fs := TFilestream.Create(FileName, fmOpenReadWrite or fmShareExclusive);
  try
    i := (fs.Size + SizeOf(buffer) - 1) div SizeOf(buffer);
    while i > 0 do
    begin
      fs.WriteBuffer(Buffer, SizeOf(buffer));
      if i and $7F = 0 then FlushFileBuffers(fs.Handle);
      Dec(i);
    end;
    FlushFileBuffers(fs.Handle);
  finally
    fs.Free;
  end;
  DeleteFile(FileName);
end;
Stattdessen könnte man auch direkt die WinAPI verwenden.
> CreateFile OPEN_EXISTING FILE_FLAG_WRITE_THROUGH FILE_FLAG_SEQUENTIAL_SCAN


Zitat von p80286:
Ach ja Cluster oder Sektor-G?
Nimm das was größer ist, damit kein Verschnitt übrig bleibt.
Clustergröße = n * Sektorgröße

Zitat von p80286:
1) was ist mit den Alt.DataStreams?
Die bleiben erhalten

Zitat:
// zuerst umbennen, dann später keine Rückschlüsse auf den Dateinamen möglich sind
NTFS ist ein JFS (JournalingFileSystem) und merkt sich alles mögliche.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat