*ü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.