2009-08-05 3 views
4

Я ищу хороший способ добавления метаданных в файл. dsofile.dll отлично работает для NTFS. Метаданные теряются, когда вы бросаете копию на общий ресурс FAT32 (я думаю, он использует скрытые потоки NTFS). Документы Microsoft Word содержат метаданные, которые не теряются, как они это делают? Синтаксис FAT, отправка файла по полосам E-Mail всех метаданных, созданных с помощью dsofile (а также метаданных, созданных вручную с помощью проводника Windows). Отдельные файлы метаданных не являются опцией. Он должен быть совместим со стандартными методами Windows. Если я отправлю кому-то файл с Outlook, и он отправит его обратно, метаданные не должны быть потеряны.dsofile C# Свойства пользовательского файла API/NTFS

(требуемая мета данные на самом деле только ID)

+0

Разве Word не сохраняет все метаданные как часть файла? –

+1

есть. MS-Word хранит метаданные в самом формате .doc. Скрытые потоки данных NTFS представляют собой отдельный механизм хранения метаданных, который не требует, чтобы сам формат файла знал о метаданных. Недостатком является то, что наивные приложения не копируют метаданные из скрытых потоков NTFS при копировании файла. – Cheeso

ответ

1

Любое решение зависит от формата. Файлы MS OFfice представляют собой (все) составные файлы, и там есть место для свойств. В некоторых форматах (например, PE-файлы) можно просто добавить данные в конец файла, если вы знаете, как их читать позже. В ZIP-файле вы, вероятно, можете найти место в каталоге или просто добавить в архив вспомогательный файл с вашими данными. Другие форматы не выдерживают этого, и вам нужно будет найти свой собственный способ решения проблемы.

Собственно, имя файла также может быть хорошим заполнителем для вашего идентификатора.

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

+0

Правильно, в формате zip в настоящее время нет формализованного механизма для хранения метаданных NTFS из «скрытых потоков данных» в запись zip. Обычно эти метаданные NTFS вообще не хранятся в zip-файле. – Cheeso

0

насчет стандартных свойств, а не обычая DSOFile свойств? Т.е. комментарии, автор и т. Д.? они убираются?

Не уверен, что его идеал, но способ, которым мы обходим это, состоит в том, что у нас есть инструмент, который будет обладать свойствами DSOfile и сохранять текстовый файл, который затем отправляется по электронной почте вместе с файлом, а на другом конце пользователь запускает инструмент для повторного импорта свойств dsofile из текста.

2

Проблема в том, что все файловые системы предоставляют однопотоковое представление файла как наибольшего общего знаменателя. Благодаря этому интерфейсу, который предоставляет содержимое «содержимого», вы можете читать или сохранять свойства и переносить их с помощью «содержимого» с помощью утилит наивной системы (или пользователя). Например, CopyFile в Windows будет осторожно потерять альтернативные потоки данных и не имеет понятия «теневые файлы».

Вопрос в том, соответствует ли формат «содержимого» произвольному добавлению свойств.

В некоторых форматах допускается произвольное содержимое (например, файл docfile MSFT aka .doc/.xls/etc). Некоторые из них допускают ограниченный контент (.mp3, .jpg, .exe).

Некоторые из них полностью SOL (.txt, .bmp).