WinFuture-Forum.de: Löschen Und Verschieben Von Dateien Und Verzeichnissen Mit C#1.1 Aber - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Löschen Und Verschieben Von Dateien Und Verzeichnissen Mit C#1.1 Aber


#1 Mitglied ist offline   DonElTomato 

  • Gruppe: aktive Mitglieder
  • Beiträge: 311
  • Beigetreten: 04. Oktober 05
  • Reputation: 0

geschrieben 06. Juni 2006 - 10:33

Hallo,

da ist schon meine zweite Frage an diesem Tage. Diese bezieht sich auf das löschen und verschieben von Verzeichnissen.

Und zwar ist das löschen von Verzeichnissen mit dem .NET Framework etwas buggy. Dort werden Dateien nicht gelöscht weil sie "angeblich" von einem anderen Prozess verwendet werden. Dies bestätigten auch andere Berichte im Netz.

Meine Frage ist jetzt weiß jemand womit ich Ordner und Dateien einfach und schnell löschen sowie verschieben kann?
0

Anzeige



#2 Mitglied ist offline   constructor 

  • Gruppe: aktive Mitglieder
  • Beiträge: 112
  • Beigetreten: 18. April 05
  • Reputation: 0

geschrieben 06. Juni 2006 - 11:43

Hallo Don,

hatte vor einigen Monaten das gleiche Problem und habe mir die folgende Hilfsfunktion zum Kopieren von Dateien geschieben. Sie liefert einen System.IO.MemoryStream zurück, mit dem du dann z.B. wieder eine Datei erstellen kannst.

/// <summary>Kopiert ein File ohne es zu öffnen in einen MemoryStream und liefert 
/// diesen zurück</summary>
/// <remarks>Dies ist bei Dateien notwendig, die weiterhin bearbeitbar (löschen/kopieren etc.)
/// bleiben sollten. Ansonsten kommt es zur IOException "The process cannot access the file
/// because it is being used by another process"</remarks>
public static System.IO.MemoryStream GetMemoryStreamFromFile(string p_sPath)
{
	byte[] l_Bytes = GetByteArrayFromFile(p_sPath);
	if(l_Bytes != null)
	{
		System.IO.MemoryStream l_MemoryStream = new System.IO.MemoryStream(l_Bytes);
		return l_MemoryStream;
	}
	else
	{
		return null;
	}
}

/// <summary>Kopiert ein File ohne es zu öffnen in ein ByteArray und liefert 
/// dieses zurück</summary>
/// <remarks>Dies ist bei Dateien notwendig, die weiterhin bearbeitbar (löschen/kopieren etc.)
/// bleiben sollten. Ansonsten kommt es zur IOException "The process cannot access the file
/// because it is being used by another process"</remarks>
public static byte[] GetByteArrayFromFile(string p_sPath)
{
	if(System.IO.File.Exists(p_sPath))
	{
		System.IO.FileStream l_FileStream = System.IO.File.OpenRead(p_sPath);
		byte[] l_Bytes = new byte[l_FileStream.Length];

		int offset=0;
		int remaining = l_Bytes.Length;
		while (remaining > 0)
		{
			int read = l_FileStream.Read(l_Bytes, offset, remaining);
			if (read <= 0)
			{
				throw new EndOfStreamException(String.Format("End of stream reached with {0} bytes left to read", remaining));
				remaining -= read;
				offset += read;
			}
		}
		l_FileStream.Close();
		return l_Bytes;
	}
	else
	{
		return null;
	}
}


Grüße
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0