package com.se.simu.service.Impl;
|
|
import com.se.simu.service.IBizH5FileParserService;
|
import hdf.hdf5lib.H5;
|
import hdf.hdf5lib.HDF5Constants;
|
import hdf.hdf5lib.exceptions.HDF5Exception;
|
import hdf.hdf5lib.exceptions.HDF5LibraryException;
|
import org.springframework.stereotype.Service;
|
|
import java.util.HashMap;
|
import java.util.Map;
|
|
@Service
|
public class BizH5FileParserServiceImpl implements IBizH5FileParserService {
|
|
|
@Override
|
public long openH5File(String filePath) {
|
int hdf5File = -1;
|
try {
|
hdf5File = H5.H5Fopen(filePath, HDF5Constants.H5F_ACC_RDWR, HDF5Constants.H5P_DEFAULT);
|
// 在这里进行文件操作
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if (hdf5File >= 0) {
|
try {
|
H5.H5Fclose(hdf5File);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
return hdf5File;
|
}
|
|
@Override
|
public Object readDataset(long fileId, String datasetName) {
|
// long datasetId = H5.H5Dopen((int) fileId, datasetName, HDF5Constants.H5P_DEFAULT);
|
// long datatypeId = H5.H5Dget_type((int) datasetId);
|
|
int[] data = new int[1]; // 假设数据集为整型数组
|
// H5.H5Dread((int) datasetId, datatypeId, HDF5Constants.H5S_ALL, HDF5Constants.H5S_ALL, HDF5Constants.H5P_DEFAULT, data);
|
//
|
// H5.H5Dclose(datasetId);
|
// H5.H5Tclose(datatypeId);
|
|
return data[0];
|
}
|
|
@Override
|
public void closeH5File(long fileId) throws HDF5LibraryException {
|
H5.H5Fclose((int) fileId);
|
}
|
|
@Override
|
public Object parseH5File(String filePath) {
|
String fileName = "D:\\xingjs\\A_daily\\PycharmProjects\\pythonProject\\dev\\example.h5";
|
String datasetName = "dataset2";
|
|
|
try {
|
|
|
// 打开.h5文件
|
int fileId = H5.H5Fopen(fileName, HDF5Constants.H5F_ACC_RDONLY, HDF5Constants.H5P_DEFAULT);
|
|
// 打开数据集
|
int datasetId = H5.H5Dopen(fileId, datasetName, HDF5Constants.H5P_DEFAULT);
|
|
// 获取数据集的数据类型
|
int datatypeId = H5.H5Dget_type(datasetId);
|
int datatypeSize = H5.H5Tget_size(datatypeId);
|
|
// 获取数据集的数据空间
|
int dataspaceId = H5.H5Dget_space(datasetId);
|
long[] dims = new long[HDF5Constants.H5S_MAX_RANK];
|
H5.H5Sget_simple_extent_dims(dataspaceId, dims, null);
|
|
// 读取数据集的数据
|
byte[] data = new byte[(int) (dims[0] * datatypeSize)];
|
H5.H5Dread(datasetId, datatypeId, HDF5Constants.H5S_ALL, HDF5Constants.H5S_ALL, HDF5Constants.H5P_DEFAULT, data);
|
|
// 关闭数据集
|
H5.H5Dclose(datasetId);
|
|
// 关闭文件
|
H5.H5Fclose(fileId);
|
|
// 处理数据
|
// ...
|
|
// 打印数据示例
|
for (int i = 0; i < data.length; i++) {
|
System.out.print(data[i] + " ");
|
}
|
} catch (HDF5Exception e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
|
}
|