我正在使用HDF5文件对C++类数据进行一种“序列化”。有没有一种方法可以遍历HDF5文件,按照创建顺序访问每个数据集?
我选择HDF5是因为我需要从程序外部访问数据,并能够恢复程序状态。
谢谢!
我选择HDF5是因为我需要从程序外部访问数据,并能够恢复程序状态。
谢谢!
对我来说,能够按照创建顺序遍历数据集组(及其子组)就足够了。为了实现这一点(正如embert上面所说),文件中的组必须使用设置了H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED标志的方式进行创建。也就是说,调用:
hid_t group_creation_plist;
group_creation_plist = H5Pcreate(H5P_GROUP_CREATE);
status = H5Pset_link_creation_order(group_creation_plist,
H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED);
hid_t group_id;
group_id = H5Gcreate(id_file,
"/mydata",
H5P_DEFAULT,
group_creation_plist,
H5P_DEFAULT);
H5Literate
函数,并确保将index_type
参数设置为H5_INDEX_CRT_ORDER
。 status = H5Literate (group_id,
H5_INDEX_CRT_ORDER, // Note this argument
H5_ITER_INC,
NULL,
op_func,
(void *) &od);
H5Acreate2
中会忽略 acpl_id
参数: https://portal.hdfgroup.org/display/HDF5/H5A_CREATE2 - user14717