Вопрос

Я хотел бы программно изменить данные, связанные с набором данных в файле HDF5. Кажется, я не могу найти способ удалить набор данных по имени (что позволяет мне снова добавить его с измененными данными) или обновить набор данных по имени. Я использую C API для HDF5 1.6.x, но указатели на любой HDF5 API были бы полезны.

Это было полезно?

Решение

Согласно руководству пользователя :

  

HDF5 в настоящее время не предоставляет простого механизма для удаления набора данных из файла или для восстановления пространства хранения, занимаемого удаленным объектом.

О таком простом удалении не может быть и речи. Но раздел продолжается:

  

Удаление набора данных и освобождение используемого им пространства можно выполнить с помощью функции H5Ldelete и h5repack . С помощью функции H5Ldelete ссылки на набор данных могут быть удалены из файловой структуры. После удаления всех ссылок набор данных становится недоступным для любого приложения и фактически удаляется из файла. Способ восстановить пространство, занимаемое несвязанным набором данных, - записать все объекты файла в новый файл. Любой несвязанный объект недоступен приложению и не будет включен в новый файл. Запись объектов в новый файл может быть выполнена с помощью специальной программы или служебной программы h5repack .

Другие советы

Если вы хотите удалить набор данных в c ++, вам понадобятся следующие команды:

H5File m_h5File (pathAndNameToHDF5File, H5F_ACC_RDWR); //The hdf5 c++ object.
std::string channelName = "/myGroup/myDataset";
int result = H5Ldelete(m_h5File.getId(), channelName.data(), H5P_DEFAULT);

результат будет неотрицательным значением в случае успеха; в противном случае возвращает отрицательное значение. https://support.hdfgroup.org/HDF5/doc/ RM / RM_H5L.html # Link-Delete

Как сказал @MaxLybbert, пространство на жестком диске не восстанавливается. Вы должны использовать инструмент для перепаковки. Тем не менее, с HDF5 v.1.10 пространство может быть восстановлено. Но руководство пользователя еще не готово: https://support.hdfgroup.org/HD5 /docNewFeatures/NewFeaturesFileSpaceMgmtDocs.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top