С# гарантирует, что binFile в zip-файле действительно обновлен

Этот вопрос является дополнительным вопросом

Чтение двоичного файла из почтового индекса файл из C#, не распаковывая его

После чтения bin-файла из zip-файла я читаю его и вношу некоторые изменения в данные (id1, id2, value1), а затем записываю в новый поток памяти.

Затем в C# я удаляю zipentry из zip-файла и добавляю новый поток памяти как zip-запись с тем же именем.

 // read data and made changes, then write to a MemoryStream called myms 
 MemoryStream myms = new MemoryStream();
 // then 
 ZipFile.RemoveEntry(binFileName); // remove the file with non-normalized rm factors
 ZipFile.AddEntry("subFolder/" + binFileName, myms.ToArray());

После того, как все было сделано, я вручную разархивировал zip-файл и обнаружил, что дата и время binFile по-прежнему соответствуют времени, когда он был создан неделю назад, а не новому времени, когда он был заменен.

Как убедиться, что новые данные были записаны в binFile?


person user3448011    schedule 09.05.2017    source источник
comment
Возможно, вам также следует указать, из какой библиотеки вы используете этот класс ZipFile (или установить тег библиотеки в вопросе)   -  person    schedule 09.05.2017
comment
Другой вопрос: действительно ли старый файл был удален, а новый файл действительно записан в ZIP-архив? То есть, если вы снова извлечете файл из ZIP-архива (после запуска вашего кода, конечно), вы получите файл со старыми данными или файл с новыми данными?   -  person    schedule 09.05.2017
comment
В режиме отладки я вижу старые данные, а старые удаляются из zipentries. Кроме того, новая запись zip также добавляется в zip-файл путем отслеживания общего количества записей zip в zip-файле.   -  person user3448011    schedule 09.05.2017
comment
ZipFile взят из Ionic.Zip.dll.   -  person user3448011    schedule 09.05.2017
comment
К вашему сведению: используемая вами библиотека называется dotnetzip. Если в будущем у вас возникнут дополнительные вопросы о работе с ZipFile, вы можете добавить к своему вопросу тег dotnetzip ;)   -  person    schedule 09.05.2017
comment
А как насчет настоящего ZIP-архива? Боюсь, вы не поняли моего вопроса. Пробовали ли вы повторно извлечь файл из архива? (например, с помощью 7-zip, WinRar или функции ZIP проводника Windows). Содержит ли распакованный файл в ZIP-архиве ожидаемые новые данные, которые вы записали с помощью своей программы, или это все еще старые данные?   -  person    schedule 09.05.2017
comment
Я разархивировал его с помощью winZip. Я вижу binFile, который нужно заменить. Но дата/время binFile устарели, а не время, когда я заменил его с С#.   -  person user3448011    schedule 09.05.2017
comment
Как проверить, что новые данные были записаны в файл? Прочтите его с С# еще раз, чтобы проверить?   -  person user3448011    schedule 09.05.2017
comment
Я не знаю. Как вам проще всего/удобнее проверить файл зависит от типа файла, нет? Если это просто двоичные данные, используйте шестнадцатеричный редактор/просмотрщик. Если это какой-то формат документа, используйте для него соответствующую программу просмотра. Если это просто какой-то текстовый файл, используйте текстовый редактор. Не программируйте что-либо на C# для проверки содержимого файла. Скорее всего, вы делаете ошибку в своем программировании, из-за которой такая самозапрограммированная проверка может привести к ложным результатам...   -  person    schedule 09.05.2017
comment
Я могу открыть его с помощью hexedit в cygwin, но он все равно не читается человеком.   -  person user3448011    schedule 09.05.2017
comment
И что. Вы знаете, что должно быть в файле. Таким образом, вы должны быть в состоянии сказать, является ли то, что вы видите, ожидаемым содержимым файла, верно? Или я вас неправильно понял?   -  person    schedule 10.05.2017