dsofile c # API / NTFS пользовательские свойства файла - PullRequest
4 голосов
/ 05 августа 2009

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

(необходимые метаданные на самом деле являются только идентификатором)

Ответы [ 3 ]

2 голосов
/ 18 сентября 2010

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

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

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

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

1 голос
/ 26 сентября 2010

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

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

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

0 голосов
/ 20 августа 2010

А как насчет стандартных свойств, а не пользовательских свойств DSOFile? Т.е. комментарии, автор и т. Д.? они стираются?

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

...