110,534
社区成员
发帖
与我相关
我的任务
分享
H5FileId fileId = H5F.create("abcd.hdf", H5F.CreateMode.ACC_TRUNC); // Create a group.
H5GroupId groupId = H5G.create(fileId, "/fromRoot"); // Create a dataspace for common use.
long[] dims = { 20, 2,2 };
string[] strs = { "a", "b", "c" };
H5DataSpaceId dspace = H5S.create_simple(2, dims); // Create a dataset using file as location with absolute path name.
//H5DataSpaceId dspace2 = H5S.create(2, strs); // Create a dataset using file as location with absolute path name.
H5DataSetId dset1Id = H5D.create(fileId, "/fromRoot/intArray", H5T.H5Type.NATIVE_INT, dspace); // Create a dataset using group as location with absolute path name.
H5DataSetId dset2Id = H5D.create(groupId, "/fromRoot/shortArray", H5T.H5Type.NATIVE_DOUBLE, dspace); // Create a dataset using group as location with relative path name.
H5DataSetId dset3Id = H5D.create(groupId, "/fromRoot/notfromRoot", H5T.H5Type.C_S1, dspace);
H5D.write(dset1Id, new H5DataTypeId(H5T.H5Type.NATIVE_INT), new H5Array<int>(new int[] { 1, 2, 4, 56, 62, 234, 43, 342, 4 }));
H5D.write(dset2Id, new H5DataTypeId(H5T.H5Type.NATIVE_DOUBLE), new H5Array<double>(new double[] { 1.2, 2.3, 3, 4, 5, 6, 7, 8, 9 }));
//写入string[]乱码
H5D.write<string>(dset3Id, new H5DataTypeId(H5T.H5Type.C_S1), new H5Array<string>(new string[] { "000", "111", "011", "ddd", "eee", "fff", "ggg", "hhh" }));
private static byte[] StringToByteArray(string str)
{
var enc = new System.Text.ASCIIEncoding();
var array1 = enc.GetBytes(str);
var charArray = new byte[str.Length + 1];
array1.CopyTo(charArray, 0);
charArray[str.Length] = 0;
return charArray;
}
public static void SaveString(H5FileId fileId, string dataSetName, String stringToSave)
{
var charArray = StringToByteArray(stringToSave);
var dims = new long[]
{
1
};
H5DataSpaceId dspace = H5S.create_simple(1, dims);
H5DataTypeId memtype = H5T.copy(H5T.H5Type.C_S1);
H5T.setSize(memtype, stringToSave.Length);
// does not work...
// H5T.setVariableSize(memtype);
H5DataSetId dset = H5D.create(fileId,
dataSetName,
memtype,
dspace);
var hdf5array = new H5Array<byte>(charArray);
H5D.write(dset, memtype, hdf5array);
H5D.close(dset);
H5S.close(dspace);
H5T.close(memtype);
}