我有一个hdf5文件,表格264x264x1024填充uint32
数字。我在理解如何从java中获取hdf5文件的数据时遇到问题。我想将表中的数据写入数组。有一个简单的方法吗?
可悲的是,我正在研究的系统仍然是java6。
对不起,如果问题不是很具体,如果您需要更多信息来帮助我,请询问。正如我所说,我还不知道很多关于hdf5。
谢谢
解决这个问题的最简单方法之一就是从Java中的HDF5文件的低级细节中抽象出来。您可以使用HDFql(分层数据格式查询语言 - http://www.hdfql.com)来完成此操作。
假设您的HDF5文件名为my_file.h5
并且它存储了一个名为my_dataset
的数据集(维度为264x264x1024 of uint32),您可以使用HDFql将其读入Java数组,如下所示:
// import HDFql package (make sure it can be found by the Java compiler/JVM)
import as.hdfql.*;
public class Example
{
public static void main(String args[])
{
int data[][][] = new int[264][264][1024];
int x;
int y;
int z;
// use (i.e. open) an HDF5 file named "my_file.h5"
HDFql.execute("USE FILE my_file.h5");
// register variable "data" for subsequent use (by HDFql)
HDFql.variableRegister(data);
// select (i.e. read) a dataset name "my_dataset" and store it in variable "data"
HDFql.execute("SELECT FROM my_dataset INTO MEMORY " + HDFql.variableGetNumber(data));
// display content of variable "data"
for(x = 0; x < 264; x++)
{
for(y = 0; y < 264; y++)
{
for(z = 0; z < 1024; z++)
{
System.out.println(data[x][y][z]);
}
}
}
// unregister variable "data" as it is no longer used/needed (by HDFql)
HDFql.variableUnregister(data);
}
}
此示例已使用Java 8和HDFql 1.4.0版成功运行。另外,请记住:
uint32
(你必须以某种方式自己进行转换);OutOfMemoryError
异常(要解决此问题,启动Java时必须使用参数-Xmx
)。