Подтвердить что ты не робот

Получить имя файла из байтового массива или потока

Возможно ли получить имя файла из байтового массива или потока? Я не хочу сохранять файл. Я просто хочу получить имя.

4b9b3361

Ответ 1

Если Stream на самом деле является FileStream, тогда это может быть доступно путем нажатия на FileStream и доступа к свойству .Name:

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

Однако в общем случае: нет, это недоступно. A byte[], конечно, не имеет понятия имени файла и большинства других типов потоков. Аналогично, базовый поток FileStream, который обертывается другими потоками (сжатие, шифрование, буферизация и т.д.), Не будет предоставлять такую ​​информацию, несмотря на то, что основной поток (несколько слоев вниз) является файлом.

Я бы обработал имя файла отдельно.

Ответ 2

Нет, это невозможно (хорошо, так что возможно в классе FileStream, узнайте что-нибудь новое!).

Массив или поток байтов представляет контент файла, а не метаданные Windows.

Есть много прямых способов сохранить эту информацию, но не зная больше о вашей ситуации, я не могу предложить решение.

Ответ 3

Вся информация о файле (например, имя, расширение и т.д.) является частью метаданных для фактического файла. Байт-массив будет содержать только фактические данные. Возможно, если сам массив байтов содержит метаданные (пример XML файла)... однако вам нужно будет знать тип и, в частности, где искать.