我们如何将多个数据集写入单个HDF5文件? 同样,如何从同一个文件中重新读取这些数据集?
我正在考虑使用组创建多个数据集。下面的代码尝试使用组下的ScalarDS创建不透明数据类型,但它会抛出异常。
public static void createFile(Message message)throws Exception{
// retrieve an instance of H5File
FileFormat fileFormat = FileFormat.getFileFormat(FileFormat.FILE_TYPE_HDF5);
if (fileFormat == null){
System.err.println("Cannot find HDF5 FileFormat.");
return;
}
// create a new file with a given file name.
H5File testFile = (H5File)fileFormat.create(fname);
if (testFile == null){
System.err.println("Failed to create file:"+fname);
return;
}
// open the file and retrieve the root group
testFile.open();
Group root = (Group)((javax.swing.tree.DefaultMutableTreeNode)testFile.getRootNode()).getUserObject();
Group g1 = testFile.createGroup("byte arrays", root);
// obtaining the serialized object
byte[] b =serializer.serialize(message);
int len=b.length;
byte[] dset_data = new byte[len+1];
// Initialize data.
int indx=0;
for (int jndx = 0; jndx < len ; jndx++)
dset_data[jndx] = b[jndx];
dset_data[len] = (byte)(indx) ;
// create opaque dataset ---- error here…
Datatype dtype = testFile.createDatatype(
Datatype.CLASS_OPAQUE, (len*4), Datatype.NATIVE, Datatype.NATIVE);
Dataset dataset = testFile.createScalarDS
("byte array", g1, dtype, dims1D, null, null, 0, dset_data);//error shown in this line
// close file resource
testFile.close();
}
}
我无法理解为什么它会在createScalarDS行给我HDF5库例外和点。为什么它无法在组下创建不透明的数据集?