c#操作HDF5 使用HDF5DotNet存储简单文本字符串
先到官网下载DLL:

然后Nuget中安装HDF5DotNet.X64

static void Main(string[] args) { /* 新建h5文件,写入字符串,并读取出来 */ string str = "这是一段要存入的字符串"; byte[] bData = Encoding.UTF8.GetBytes(str); string hdf5FileName = @"D:\\1.h5"; H5FileId fileId = H5F.create(hdf5FileName, H5F.CreateMode.ACC_TRUNC); H5DataTypeId typeId = H5T.copy(H5T.H5Type.NATIVE_B8); int typeSize = H5T.getSize(typeId); string dataSetName = "test"; //这里使用一维数组就可以了 H5DataSpaceId dataSpaceId = H5S.create_simple(1, new long[1] { bData.Length }); H5DataSetId dataSetId = H5D.create(fileId, dataSetName, typeId, dataSpaceId); //写入 H5D.write(dataSetId, typeId, new H5Array<byte>(bData)); //查询目录在h5位置 int rank = H5S.getSimpleExtentNDims(dataSpaceId); //查询目录矩阵大小 long[] a = H5S.getSimpleExtentDims(dataSpaceId); //建立对应大数组 byte[] readDataBack = new byte[a[0]]; //从h5文件中读取到内存 H5D.read(dataSetId, typeId, new H5Array<byte>(readDataBack)); string txt = Encoding.UTF8.GetString(readDataBack); H5S.close(dataSpaceId); H5D.close(dataSetId); H5T.close(typeId); H5F.close(fileId); Console.WriteLine(txt); Console.Read(); }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
static void Main(string[] args) { /* 从现有h5文件,读取字符串(本例中该字符串在h5中是以字节数组存储的) */
string hdf5FileName = @"D:\\1.h5"; H5FileId fileId = H5F.open(hdf5FileName, H5F.OpenMode.ACC_RDONLY); H5DataSetId dataSetId = H5D.open(fileId, "test"); H5DataSpaceId h5DataSpaceId = H5D.getSpace(dataSetId); int rank = H5S.getSimpleExtentNDims(h5DataSpaceId); long[] a = H5S.getSimpleExtentDims(h5DataSpaceId); //建立对应大数组 byte[] readDataBack = new byte[a[0]]; var typeId=new H5DataTypeId(H5T.H5Type.NATIVE_B8); //从h5文件中读取到内存 H5D.read(dataSetId, typeId, new H5Array<byte>(readDataBack)); string txt = Encoding.UTF8.GetString(readDataBack); H5S.close(h5DataSpaceId); H5D.close(dataSetId); H5F.close(fileId); Console.WriteLine(txt); Console.Read(); }
本文来自博客园,作者:挨踢界小学生,转载请注明原文链接:https://www.cnblogs.com/jiangweiyu/p/15925438.html

浙公网安备 33010602011771号