Langsam bei sehr großen Filisströmen entsorgen?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Langsam bei sehr großen Filisströmen entsorgen?

Post by Anonymous »

Ich habe diesen Code < /p>

string archiveFileName = BuildArchiveFileName(i, null);
string tmpArchiveFileName = BuildArchiveFileName(i, "tmp");
try
{
using (FileStream tmpArchiveMemoryStream = new FileStream(tmpArchiveFileName, FileMode.Create))
{
using (BinaryWriter pakWriter = new BinaryWriter(tmpArchiveMemoryStream))
{
if (i == 0)
{
WriteHeader(pakWriter, pakInfo.Header);
WriteFileInfo(pakWriter, pakInfo.FileList);
uint remainingBytesToDataOffset = pakInfo.Header.DataSectionOffset - CalculateHeaderBlockSize(pakInfo.Header);
pakWriter.Write(Util.CreatePaddingByteArray((int)remainingBytesToDataOffset));
}

foreach (String file in pakInfo.FileList.Keys)
{
DosPak.Model.FileInfo info = pakInfo.FileList[file];
if (info.IndexArchiveFile == i)
{
//Console.WriteLine("Writing " + file);
byte[] fileData = GetFileAsStream(file, false);
int paddingSize = (int)CalculateFullByteBlockSize((uint)fileData.Length) - fileData.Length;
pakWriter.Write(fileData);
pakWriter.Write(Util.CreatePaddingByteArray(paddingSize));
}
}
}
}
}
finally
{
File.Delete(archiveFileName);
File.Move(tmpArchiveFileName, archiveFileName);
}
< /code>

Ich habe dies mit Nunit in kleinen Dateigrößen getestet und es funktioniert perfekt. Dann, als ich es an einem realen Beispiel ausprobiert habe, sind Dateien über 1 GB. Ich bekomme in Schwierigkeiten auf dem Löschen. Es gibt an, dass die Datei noch nach einem anderen Prozess verwendet wird. Obwohl diese Datei nicht hätte entsorgt werden dürfen Ich frage mich also, ob die Entsorgung des FileStream nur langsam ausgeführt wird, und das ist der Grund, warum ich in Schwierigkeiten gerate. Kleine Notiz in all meiner Dateibehandlung Ich verwende einen FileStream mit dem Keyword.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post