2015-06-09 2 views
0

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

Через некоторое время мне нужно вернуться и получить мои файлы и обновить их, дело в том, что некоторые другие файлы PDF могут быть добавлены туда, которые не являются моими файлами, и мне нужно получить и использовать только мои файлы PDF ,

Мой вопрос в том, как я могу легко идентифицировать свои файлы? Должен ли я использовать для них определенное имя? Должен ли я создать файл для хранения имен файлов? Или есть что-то, что может подписать файл как «мой файл» (без использования сертификата или стороннего программного обеспечения)?

Обратите внимание, что я использую последние версии C# и .NET.

+0

Вы можете использовать расширенные свойства файла: http://stackoverflow.com/questions/5337683/how-to-set-extended-file-properties –

+1

Я бы предпочел хранить имя файла и хэш в приложении db (или файл), а затем просто перебирать сохраненные файлы и сопоставлять хэши. Я думаю, что это более надежно. – Oleg

+0

Привет, Рон, вы как-то знаете, это решение работает на любом устройстве, которое может запускать .NET? – Clock

ответ

1

Есть фактически 3 способа:

  • Написать подпись и свойства в PDF файл, а затем выгружены. Для этого требуется использовать специализированную стороннюю библиотеку PDF для записи, чтения, добавления подписи в PDF;
  • Сохраните отдельный XML-файл с подробной информацией, такой как последнее обновление, версия, значение CRC или MD5, чтобы файл не был изменен. Таким образом, у вас есть, например, MyDocument.pdf и MyDocument.pdf.xml, и вы можете искать весь файл .pdf.xml внутри папки, а затем просто изменить .pdf.xml на расширение .pdf, чтобы получить оригинальные имена файлов pdf. Этот способ не потребует реализации сторонних компонентов. Вы также можете указать sign XML file, чтобы убедиться, что он не был изменен.
  • Самый простой способ - использовать имена файлов для хранения дополнительной информации и значения CRC или MD5 hash (для поддержания целостности). Например, вы можете называть файлы «MyApp_15-06-2015-e4d909c290d0fb1ca068ffaddf22cbd0.pdf» и сканировать файлы «MyApp _ *. Pdf», а затем просто анализировать имя файла, чтобы получить дату и хэш или значение CRC. Этот способ можно выполнить с помощью .NET без каких-либо сторонних библиотек.
0

Попробуйте что-то вроде этого:

void Main() 
{ 
    var myfile = "somefile.pdf"; 
    File.WriteAllBytes(myfile+".myfile",""); 
} 

Тогда вы просто посмотрите на ваш «MyFiles»

Directory.GetFiles("path","*.myfile") 

В основном вы создаете файл нулевых байт, который имеет исходный файл в его имени. После того, как вы вернете все файлы «* .myfile», вы можете перейти к своему оригиналу, разделив «.myfile» на имя и удалив версию «myfile», когда вы закончите ее обработку.

+0

Привет, Чарльз ... это решение звучит как занимающее много времени ... Я бы растовал mantain xml-файл с именами моих файлов, которые используют это ... – Clock

+0

@Clock yes Вы можете использовать XML для хранения файлов, но тогда это более сложный процесс, а затем просто создание файла с нулевым байтом, и пусть файловая система хранит ваши файлы (как это уже делается). Вы спросили: «Мой вопрос в том, как я могу легко идентифицировать свои файлы ?» и я думаю, что мое решение проще всего, так как это 1 строка кода для обозначения файла как «myfile» и одной строки кода для извлечения списка «myfile» (ы). XML имеет более тяжелый подъем для достижения тех же результатов после вычисления в схеме/разборе и т. Д. – Charles

0

Задайте свойство информации о документе «Продюсер».

+0

Любая информация о том, как это сделать с C#? – Caramiriel

+0

Это зависит от библиотеки PDF, с которой вы работаете для создания/изменения PDF-файлов. Когда вы нажимаете Ctrl + D в Adobe Reader, он показывает метаданные - название, автор, продюсер, создатель и т. Д. В спецификациях PDF он называется «Свойства информации о документе». Вот он, используя продукт моей компании. Вы можете найти аналогичный API в своей библиотеке PDF. http://www.gnostice.com/nl_article.asp?id=98&t=Reading_and_Writing_PDF_Document_Information_Properties_In_NET – gn1

Смежные вопросы