将多个数据集读取/写入单个HDF5文件

时间:2012-03-09 09:07:12

标签: java hdf5

我们如何将多个数据集写入单个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库例外和点。为什么它无法在组下创建不透明的数据集?

1 个答案:

答案 0 :(得分:0)

默认配置不允许,但您可以查看支持通过MPI进行并行写访问的Parallel HDF5
但是,这仅适用于未压缩的数据。