Возможно ли получить имя файла из байтового массива или потока? Я не хочу сохранять файл. Я просто хочу получить имя.
Получить имя файла из байтового массива или потока
Ответ 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 файла)... однако вам нужно будет знать тип и, в частности, где искать.