/* * Creating an external file. */ #include #define FILE "dset.h5" int main() { hid_t file_id, dataset_id, dataspace_id, plist, plistr; hsize_t dims[2]; herr_t status; int i, j, dset_data[4][6], rdset[4][6]; char name[30]; off_t offset; hsize_t size; /* Create a new file using default properties. */ file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); for (i = 0; i < 4; i++) for (j = 0; j < 6; j++) dset_data[i][j] = i * 6 + j + 1; /* Create the data space for the dataset. */ dims[0] = 4; dims[1] = 6; dataspace_id = H5Screate_simple(2, dims, NULL); plist = H5Pcreate (H5P_DATASET_CREATE); status = H5Pset_external (plist, "ext1.dat", 0, (hsize_t)(dims[0]*dims[1]*4) ); dataset_id = H5Dcreate(file_id, "dset", H5T_STD_I32BE, dataspace_id, plist); status = H5Dwrite(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data); /* End access to the dataset and release resources used by it. */ status = H5Dclose(dataset_id); status = H5Pclose(plist); /* Terminate access to the data space. */ status = H5Sclose(dataspace_id); /* Close the file. */ status = H5Fclose(file_id); /* Open file and read dataset, then get external file name */ file_id = H5Fopen(FILE, H5F_ACC_RDWR, H5P_DEFAULT); dataset_id = H5Dopen(file_id, "/dset"); status = H5Dread(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdset); printf ("\nData:\n"); for (i = 0; i < 4; i++) { for (j = 0; j < 6; j++) printf ("%i ", rdset[i][j]); printf ("\n"); } printf ("\n"); /* Get and print the external file name */ plistr = H5Dget_create_plist (dataset_id); status = H5Pget_external (plistr, 0, sizeof (name), name, &offset, &size); printf ("\nName of External File: %s\n\n", name); status = H5Pclose(plistr); status = H5Dclose(dataset_id); status = H5Fclose(file_id); }