AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Datei sicher löschen

Ein Thema von Luckie · begonnen am 29. Apr 2010 · letzter Beitrag vom 29. Apr 2010
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.371 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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz