it-swarm.com.de

Ermitteln Sie den Dateinamen vom Byte-Array oder Stream

Ist es möglich, den Dateinamen von einem Byte-Array oder -Stream abzurufen? Ich möchte die Datei nicht speichern. Ich möchte nur den Namen abrufen.

21
Gus

Wenn Stream tatsächlich eine FileStream ist, ist diese may verfügbar, indem in FileStream umgewandelt und auf die .Name-Eigenschaft zugegriffen wird:

Stream stream = ...
FileStream fs = stream as FileStream;
if(fs != null) Console.WriteLine(fs.Name);

im allgemeinen Fall : nein, dies ist nicht verfügbar. Ein byte[]sicherlich hat weder ein Konzept eines Dateinamens noch die meisten anderen Arten von Streams. Ebenso wird ein FileStream-Basisstrom, der von anderen Datenströmen (Komprimierung, Verschlüsselung, Pufferung usw.) umhüllt wird, diese Informationen nicht verfügbar machen, obwohl der zugrunde liegende Datenstrom (mehrere Ebenen) eine Datei ist.

Ich würde den Dateinamen separat behandeln.

39
Marc Gravell

Nein, das ist nicht möglich (ok, es könnte also in der FileStream-Klasse möglich sein, jeden Tag etwas Neues zu lernen!). 

Ein Bytearray oder -stream repräsentiert diecontentder Datei, nicht die WindowsMetadatender Datei.

Es gibt viele Möglichkeiten, diese Informationen einfach zu speichern, aber ich weiß nicht mehr über Ihre Situation Bescheid, und ich kann keine Lösung anbieten.

14

Alle Dateiinformationen (wie Name, Erweiterung usw.) sind Teil der Metadaten einer tatsächlichen Datei. Das Byte-Array enthält nur die tatsächlichen Daten. Es kann möglich sein, dass das Byte-Array selbst Metadaten enthält (Beispiel: eine XML-Datei). Allerdings müssen Sie den Typ und insbesondere den Ort kennen, an dem Sie suchen müssen.

4

Sie können den Dateinamen nicht aus dem Bytearray abrufen. Stattdessen benötigen Sie einen Dateistream, um den Namen der Datei zu erhalten. Byte-Array speichert keinen Namen.

0