سؤال

وأود أن تغيير برمجيا البيانات المرتبطة مع مجموعة البيانات في ملف HDF5. أنا لا يمكن أن يبدو لايجاد وسيلة لإما حذف مجموعة بيانات بالاسم (السماح لي إضافته مرة أخرى مع البيانات المعدلة) أو تحديث بيانات بالاسم. أنا باستخدام API C لHDF5 1.6.x لكن مؤشرات تجاه أي API HDF5 سيكون مفيدا.

هل كانت مفيدة؟

المحلول

<وأ href = "https://support.hdfgroup.org/HDF5/doc/UG/HDF5_Users_Guide-Responsive٪20HTML5/index.html#t=HDF5_Users_Guide٪2FDatasets٪2FHDF5_Datasets.htm٪3Frhtocid٪3Dtoc5.0_2٪ 23TOC_5_5_2_Deleting_a_Dataset "يختلط =" نوفولو noreferrer "> ووفقا لدليل المستخدم :

<اقتباس فقرة>   

وHDF5 لا في هذا الوقت توفير آلية سهلة لإزالة مجموعة بيانات من ملف أو لاستعادة مساحة التخزين بواسطة كائن حذف المحتلة.

وحذف بسيط لذلك يبدو أن غير وارد. ولكن القسم يستمر:

<اقتباس فقرة>   

وإزالة مجموعة بيانات واستصلاح المساحة التي تستخدم يمكن القيام به مع وظيفة H5Ldelete وفي <م> h5repack برنامج فائدة. مع وظيفة H5Ldelete، روابط لمجموعة بيانات يمكن إزالتها من بنية الملف. بعد أن تم إزالة جميع الروابط وبيانات يصبح الوصول إلى أي تطبيق وإزالتها بشكل فعال من الملف. الطريق إلى استرداد مساحة من قبل مجموعة بيانات غير المرتبطة المحتلة هي كتابة كافة الكائنات من الملف إلى ملف جديد. أي كائن غير المرتبطة غير قابلة للوصول إلى التطبيق ولن يتم تضمينها في ملف جديد. كتابة الكائنات إلى ملف جديد يمكن القيام به مع برنامج مخصص أو مع h5repack فائدة البرنامج.

نصائح أخرى

إذا كنت تريد حذف مجموعة بيانات في ج ++ تحتاج الأوامر التالية:

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 # ارتباط حذف

وكما قالMaxLybbert، لا recoverd مساحة القرص الثابت عليه. يجب عليك استخدام أداة أعد حزم. ومع ذلك، مع v.1.10 HDF5 الفضاء يمكن استردادها. لكن دليل المستخدم ليست مستعدة بعد: https://support.hdfgroup.org/HDF5 /docNewFeatures/NewFeaturesFileSpaceMgmtDocs.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top