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(); }

 

 

 



 

posted @ 2022-02-22 23:11  挨踢界小学生  阅读(995)  评论(0)    收藏  举报