Help us improve by taking our short survey: https://www.hdfgroup.org/website-survey/

| HDF5 Last Updated on 2026-07-28 The HDF5 Field Guide

Loading...
Searching...
No Matches
Files (H5F)

## Detailed Description

Use the functions in this module to manage HDF5 files.

In addition to general file management functions, there are three categories of functions that deal with advanced file management tasks and use cases:

1. The control of the HDF5 Metadata Cache
2. The use of (MPI-) Parallel HDF5
3. The Introduction to Single-Writer/Multiple-Reader (SWMR) pattern

## Topics
| Metadata Cache
| Parallel
| Single Writer Multiple Readers

## Macros
#define | H5Fget_info H5Fget_info2

## Functions
herr_t | H5Fclear_elink_file_cache (hid_t file_id)
| Clears the external link open file cache.
herr_t | H5Fclose (hid_t file_id)
| Terminates access to an HDF5 file.
hid_t | H5Fcreate (const char *filename, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
| Creates an HDF5 file.
herr_t | H5Fdelete (const char *filename, hid_t fapl_id)
| Deletes an HDF5 file.
herr_t | H5Fflush (hid_t object_id, H5F_scope_t scope)
| Flushes all buffers associated with a file to storage.
hid_t | H5Fget_access_plist (hid_t file_id)
| Returns a file access property list identifier.
hid_t | H5Fget_create_plist (hid_t file_id)
| Returns a file creation property list identifier.
herr_t | H5Fget_dset_no_attrs_hint (hid_t file_id, bool *minimize)
| Retrieves the setting for whether or not a file will create minimized dataset object headers.
herr_t | H5Fget_eoa (hid_t file_id, haddr_t *eoa)
| Retrieves the file's end-of-allocation (EOA).
ssize_t | H5Fget_file_image (hid_t file_id, void *buf_ptr, size_t buf_len)
| Retrieves a copy of the image of an existing, open file.
herr_t | H5Fget_fileno (hid_t file_id, unsigned long *fileno)
| Retrieves a file's file number that uniquely identifies an open file.
herr_t | H5Fget_filesize (hid_t file_id, hsize_t *size)
| Returns the size of an HDF5 file (in bytes).
ssize_t | H5Fget_free_sections (hid_t file_id, H5F_mem_t type, size_t nsects, H5F_sect_info_t *sect_info)
| Retrieves free-space section information for a file.
hssize_t | H5Fget_freespace (hid_t file_id)
| Returns the amount of free space in a file (in bytes).
herr_t | H5Fget_info1 (hid_t obj_id, H5F_info1_t *file_info)
| Retrieves global file information.
herr_t | H5Fget_info2 (hid_t obj_id, H5F_info2_t *file_info)
| Retrieves global file information.
herr_t | H5Fget_intent (hid_t file_id, unsigned *intent)
| Determines the read/write or read-only status of a file.
ssize_t | H5Fget_name (hid_t obj_id, char *name, size_t size)
| Retrieves name of file to which object belongs.
ssize_t | H5Fget_obj_count (hid_t file_id, unsigned types)
| Returns the number of open object identifiers for an open file.
ssize_t | H5Fget_obj_ids (hid_t file_id, unsigned types, size_t max_objs, hid_t *obj_id_list)
| Returns a list of open object identifiers.
herr_t | H5Fget_page_buffering_stats (hid_t file_id, unsigned accesses[2], unsigned hits[2], unsigned misses[2], unsigned evictions[2], unsigned bypasses[2])
| Retrieves statistics about page access when it is enabled.
herr_t | H5Fget_vfd_handle (hid_t file_id, hid_t fapl, void **file_handle)
| Returns pointer to the file handle from the virtual file driver.
herr_t | H5Fincrement_filesize (hid_t file_id, hsize_t increment)
| Sets the file' EOA to the maximum of (EOA, EOF) + increment.
htri_t | H5Fis_accessible (const char *container_name, hid_t fapl_id)
| Checks if a file can be opened with a given file access property list.
htri_t | H5Fis_hdf5 (const char *file_name)
| Determines whether a file is in the HDF5 format.
herr_t | H5Fmount (hid_t loc_id, const char *name, hid_t child, hid_t plist)
| Mounts an HDF5 file.
hid_t | H5Fopen (const char *filename, unsigned flags, hid_t fapl_id)
| Opens an existing HDF5 file.
hid_t | H5Freopen (hid_t file_id)
| Returns a new identifier for a previously-opened HDF5 file.
herr_t | H5Freset_page_buffering_stats (hid_t file_id)
| Resets the page buffer statistics.
herr_t | H5Fset_dset_no_attrs_hint (hid_t file_id, bool minimize)
| Sets the flag to create minimized dataset object headers.
herr_t | H5Fset_latest_format (hid_t file_id, bool latest_format)
| Sets the latest version of the library to be used for writing objects.
herr_t | H5Fset_libver_bounds (hid_t file_id, H5F_libver_t low, H5F_libver_t high)
| Enables the switch of version bounds setting for a file.
herr_t | H5Funmount (hid_t loc_id, const char *name)
| Un-mounts an HDF5 file.

## Macro Definition Documentation

## ◆ H5Fget_info

#define H5Fget_info H5Fget_info2

H5Fget_info() is a macro that is mapped to either H5Fget_info1() or H5Fget_info2().

See also
  API Compatibility Macros

## Function Documentation

## ◆ H5Fclear_elink_file_cache()

herr_t H5Fclear_elink_file_cache | ( | hid_t | file_id | ) |

Clears the external link open file cache.

Parameters

  [in] | file_id | File identifier

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fclear_elink_file_cache() evicts all the cached child files in the specified file's external file cache, causing them to be closed if there is nothing else holding them open.

H5Fclear_elink_file_cache() does not close the cache itself; subsequent external link traversals from the parent file will again cache the target file. See H5Pset_elink_file_cache_size() for information on closing the file cache.

See also
  H5Pset_elink_file_cache_size(), H5Pget_elink_file_cache_size()

Since
  1.8.7

## ◆ H5Fclose()

herr_t H5Fclose | ( | hid_t | file_id | ) |

Terminates access to an HDF5 file.

Parameters

  [in] | file_id | File identifier

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fclose() terminates access to an HDF5 file (specified by `file_id`) by flushing all data to storage.

If this is the last file identifier open for the file and no other access identifier is open (e.g., a dataset identifier, group identifier, or shared datatype identifier), the file will be fully closed and access will end.

Example
  {
  unsigned mode = H5F_ACC_TRUNC;
  char name[] = "f11.h5";
  hid_t file = H5Fcreate(name, mode, H5P_DEFAULT, H5P_DEFAULT);
  if (file != H5I_INVALID_HID)
  H5Fclose(file);
  else
  ret_val = EXIT_FAILURE;
  }

Note
  Delayed close: Note the following deviation from the above-described behavior. If H5Fclose() is called for a file, but one or more objects within the file remain open, those objects will remain accessible until they are individually closed. Thus, if the dataset `data_sample` is open when H5Fclose() is called for the file containing it, `data_sample` will remain open and accessible (including writable) until it is explicitly closed. The file will be automatically closed once all objects in the file have been closed.
  Be warned, however, that there are circumstances where it is not possible to delay closing a file. For example, an MPI-IO file close is a collective call; all of the processes that open the file must close it collectively. The file cannot be closed at some time in the future by each process in an independent fashion. Another example is that an application using an AFS token-based file access privilege may destroy its AFS token after H5Fclose() has returned successfully. This would make any future access to the file, or any object within it, illegal.
  In such situations, applications must close all open objects in a file before calling H5Fclose. It is generally recommended to do so in all cases.

Since
  1.0.0

See also
  H5Fopen()

## ◆ H5Fcreate()

hid_t H5Fcreate | ( | const char * | filename,
|  | unsigned | flags,
|  | hid_t | fcpl_id,
|  | hid_t | fapl_id )

Creates an HDF5 file.

Parameters

  [in] | filename | Name of the file to create
  [in] | flags | File access flags. Allowable values are: H5F_ACC_TRUNC: Truncate file, if it already exists, erasing all data previously stored in the file H5F_ACC_EXCL: Fail if file already exists
  [in] | fcpl_id | File creation property list identifier
  [in] | fapl_id | File access property list identifier

Returns
  Returns a file identifier if successful; otherwise returns H5I_INVALID_HID.

H5Fcreate() is the primary function for creating HDF5 files; it creates a new HDF5 file with the specified name and property lists.

The `filename` parameter specifies the name of the new file.

The `flags` parameter specifies whether an existing file is to be overwritten. It should be set to either H5F_ACC_TRUNC to overwrite an existing file or H5F_ACC_EXCL, instructing the function to fail if the file already exists.

New files are always created in read-write mode, so the read-write and read-only flags, H5F_ACC_RDWR and H5F_ACC_RDONLY, respectively, are not relevant in this function. Further note that a specification of H5F_ACC_RDONLY will be ignored; the file will be created in read-write mode, regardless.

More complex behaviors of file creation and access are controlled through the file creation and file access property lists, `fcpl_id` and `fapl_id`, respectively. The value of H5P_DEFAULT for any property list value indicates that the library should use the default values for that appropriate property list.

The return value is a file identifier for the newly-created file; this file identifier should be closed by calling H5Fclose() when it is no longer needed.

Example
  {
  unsigned mode = H5F_ACC_TRUNC;
  char name[] = "f11.h5";
  hid_t file = H5Fcreate(name, mode, H5P_DEFAULT, H5P_DEFAULT);
  if (file != H5I_INVALID_HID)
  H5Fclose(file);
  else
  ret_val = EXIT_FAILURE;
  }

Note
  H5F_ACC_TRUNC and H5F_ACC_EXCL are mutually exclusive; use exactly one.

Note
  An additional flag, H5F_ACC_DEBUG, prints debug information. This flag can be combined with one of the above values using the bit-wise OR operator (``|), but it is used only by HDF5 library developers; it is neither tested nor supported for use in applications.

Note
  On Windows, HDF5 assumes that a file name string is UTF-8 encoded and will attempt to convert it to UTF-16 before calling wide-character Windows API functions. If a file name string cannot be converted to UTF-16, the equivalent non-wide-character Windows API functions will be used, causing a file name string to be interpreted according to the active Windows code page. If an application desires that the active Windows code page be preferred, the environment variable HDF5_PREFER_WINDOWS_CODE_PAGE can be set to the value '1' or 'TRUE' (case-insensitive).

Attention
  Special case — File creation in the case of an already-open file: If a file being created is already opened, by either a previous H5Fopen() or H5Fcreate() call, the HDF5 library may or may not detect that the open file and the new file are the same physical file. (See H5Fopen() regarding the limitations in detecting the re-opening of an already-open file.)
  If the library detects that the file is already opened, H5Fcreate() will return a failure, regardless of the use of H5F_ACC_TRUNC.
  If the library does not detect that the file is already opened and H5F_ACC_TRUNC is not used, H5Fcreate() will return a failure because the file already exists. Note that this is correct behavior.
  But if the library does not detect that the file is already opened and H5F_ACC_TRUNC is used, H5Fcreate() will truncate the existing file and return a valid file identifier. Such a truncation of a currently-opened file will almost certainly result in errors. While unlikely, the HDF5 library may not be able to detect, and thus report, such errors.
  Applications should avoid calling H5Fcreate() with an already opened file.

Since
  1.0.0

See also
  H5Fopen(), H5Fclose()

## ◆ H5Fdelete()

herr_t H5Fdelete | ( | const char * | filename,
|  | hid_t | fapl_id )

Deletes an HDF5 file.

Parameters

  [in] | filename | Name of the file to delete
  [in] | fapl_id | File access property list identifier

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fdelete() deletes an HDF5 file `filename` with a file access property list `fapl_id`. The `fapl_id` should be configured with the same VOL connector or VFD that was used to open the file.

This API was introduced for use with the Virtual Object Layer (VOL). With the VOL, HDF5 "files" can map to arbitrary storage schemes such as object stores and relational database tables. The data created by these implementations may be inconvenient for a user to remove without a detailed knowledge of the storage scheme. H5Fdelete() gives VOL connector authors the ability to add connector-specific delete code to their connectors so that users can remove these "files" without detailed knowledge of the storage scheme.

For a VOL connector, H5Fdelete() deletes the file in a way that makes sense for the specified VOL connector.

For the native HDF5 connector, HDF5 files will be deleted via the VFDs, each of which will have to be modified to delete the files it creates.

For all implementations, H5Fdelete() will first check if the file is an HDF5 file via H5Fis_accessible(). This is done to ensure that H5Fdelete() cannot be used as an arbitrary file deletion call.

Note
  On Windows, HDF5 assumes that a file name string is UTF-8 encoded and will attempt to convert it to UTF-16 before calling wide-character Windows API functions. If a file name string cannot be converted to UTF-16, the equivalent non-wide-character Windows API functions will be used, causing a file name string to be interpreted according to the active Windows code page. If an application desires that the active Windows code page be preferred, the environment variable HDF5_PREFER_WINDOWS_CODE_PAGE can be set to the value '1' or 'TRUE' (case-insensitive).

Since
  1.12.0

## ◆ H5Fflush()

herr_t H5Fflush | ( | hid_t | object_id,
|  | H5F_scope_t | scope )

Flushes all buffers associated with a file to storage.

Parameters

  [in] | object_id | Location identifier
  [in] | scope | The scope of the flush action

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fflush() causes all buffers associated with a file to be immediately flushed to storage without removing the data from the cache.

`object_id` can be any object associated with the file, including the file itself, a dataset, a group, an attribute, or a named datatype.

`scope` specifies whether the scope of the flush action is global or local. Valid values are as follows:

H5F_SCOPE_GLOBAL | Flushes the entire virtual file
H5F_SCOPE_LOCAL | Flushes only the specified file

Example
  {
  unsigned mode = H5F_ACC_RDWR;
  char name[] = "f11.h5";
  hid_t file = H5Fopen(name, mode, H5P_DEFAULT);
  if (file != H5I_INVALID_HID) {
  int step;
  for (step = 0; step < 1000; ++step) {
  // do important work & flush every 20 steps
  if (step % 20 == 0) {
  if (H5Fflush(file, H5F_SCOPE_LOCAL) < 0) {
  perror("H5Fflush failed.");
  ret_val = EXIT_FAILURE;
  break;
  }
  }
  }
  if (H5Fclose(file) < 0)
  perror("H5Fclose failed.");
  }
  else
  ret_val = EXIT_FAILURE;
  }

Attention
  HDF5 does not possess full control over buffering. H5Fflush() flushes the internal HDF5 buffers and then asks the operating system (the OS) to flush the system buffers for the open files. After that, the OS is responsible for ensuring that the data is actually flushed to disk.

Since
  1.0.0

## ◆ H5Fget_access_plist()

hid_t H5Fget_access_plist | ( | hid_t | file_id | ) |

Returns a file access property list identifier.

Parameters

  [in] | file_id | File identifier

Returns
  Returns a file access property list identifier if successful; otherwise returns H5I_INVALID_HID.

H5Fget_access_plist() returns the file access property list identifier of the specified file.

The creation property list identifier should be released with H5Pclose().

Since
  1.0.0

## ◆ H5Fget_create_plist()

hid_t H5Fget_create_plist | ( | hid_t | file_id | ) |

Returns a file creation property list identifier.

Parameters

  [in] | file_id | File identifier

Returns
  Returns a file creation property list identifier if successful; otherwise returns H5I_INVALID_HID.

H5Fget_create_plist() returns the file creation property list identifier identifying the creation properties used to create this file. This function is useful for duplicating properties when creating another file.

The creation property list identifier should be released with H5Pclose().

Since
  1.0.0

## ◆ H5Fget_dset_no_attrs_hint()

herr_t H5Fget_dset_no_attrs_hint | ( | hid_t | file_id,
|  | bool * | minimize )

Retrieves the setting for whether or not a file will create minimized dataset object headers.

Parameters

  [in] | file_id | File identifier
  [out] | minimize | Flag indicating whether the library will or will not create minimized dataset object headers

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fget_dset_no_attrs_hint() retrieves the no dataset attributes hint setting for the file specified by the file identifier `file_id`. This setting is used to inform the library to create minimized dataset object headers when `true`.

The setting's value is returned in the boolean pointer minimized.

Since
  1.10.5

## ◆ H5Fget_eoa()

herr_t H5Fget_eoa | ( | hid_t | file_id,
|  | haddr_t * | eoa )

Retrieves the file's end-of-allocation (EOA).

Parameters

  [in] | file_id | File identifier
  [out] | eoa | The file's EOA

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fget_eoa() retrieves the file's EOA and returns it in the parameter eoa.

Since
  1.10.2

## ◆ H5Fget_file_image()

ssize_t H5Fget_file_image | ( | hid_t | file_id,
|  | void * | buf_ptr,
|  | size_t | buf_len )

Retrieves a copy of the image of an existing, open file.

Parameters

  [in] | file_id | File identifier
  [out] | buf_ptr | Pointer to the buffer into which the image of the HDF5 file is to be copied. If `buf_ptr` is NULL, no data will be copied but the function's return value will still indicate the buffer size required (or a negative value on error).
  [out] | buf_len | Size of the supplied buffer

Returns
  ssize_t

H5Fget_file_image() retrieves a copy of the image of an existing, open file. This routine can be used with files opened using the SEC2 (or POSIX), STDIO, and Core (or Memory) virtual file drivers (VFDs).

If the return value of H5Fget_file_image() is a positive value, it will be the length in bytes of the buffer required to store the file image. So if the file size is unknown, it can be safely determined with an initial H5Fget_file_image() call with buf_ptr set to NULL. The file image can then be retrieved with a second H5Fget_file_image() call with `buf_len` set to the initial call's return value.

While the current file size can also be retrieved with H5Fget_filesize(), that call may produce a larger value than is needed. The value returned by H5Fget_filesize() includes the user block, if it exists, and any unallocated space at the end of the file. It is safe in all situations to get the file size with H5Fget_file_image() and it often produces a value that is more appropriate for the size of a file image buffer.

Note
  Recommended Reading: This function is part of the file image operations feature set. It is highly recommended to study the guide HDF5 File Image before using this feature set.

Attention
  H5Pget_file_image() will fail, returning a negative value, if the file is too large for the supplied buffer.

See also
  H5LTopen_file_image(), H5Pset_file_image(), H5Pget_file_image(), H5Pset_file_image_callbacks(), H5Pget_file_image_callbacks()

Since
  1.8.0

## ◆ H5Fget_fileno()

herr_t H5Fget_fileno | ( | hid_t | file_id,
|  | unsigned long * | fileno )

Retrieves a file's file number that uniquely identifies an open file.

Parameters

  [in] | file_id | File identifier
  [out] | fileno | A buffer to hold the file number

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fget_fileno() retrieves a file number for a file specified by the file identifier `file_id` and the pointer `fnumber` to the file number.

This file number is the same for all open instances of the same file, as long as 1. The active VFD implements the file comparison operator, and 2. The current filesystem is able to determine if the same file is opened more than once. If these conditions are not met, it is the application's responsibility to avoid opening multiple handles into the same file, which results in undefined behavior.

Since
  1.12.0

## ◆ H5Fget_filesize()

herr_t H5Fget_filesize | ( | hid_t | file_id,
|  | hsize_t * | size )

Returns the size of an HDF5 file (in bytes).

Parameters

  [in] | file_id | File identifier
  [out] | size | Size of the file, in bytes

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fget_filesize() returns the size of the HDF5 file specified by `file_id`.

The returned size is that of the entire file, as opposed to only the HDF5 portion of the file. I.e., size includes the user block, if any, the HDF5 portion of the file, and any data that may have been appended beyond the data written through the HDF5 library.

Since
  1.6.3

## ◆ H5Fget_free_sections()

ssize_t H5Fget_free_sections | ( | hid_t | file_id,
|  | H5F_mem_t | type,
|  | size_t | nsects,
|  | H5F_sect_info_t * | sect_info )

Retrieves free-space section information for a file.

Parameters

  [in] | file_id | File identifier
  [in] | type | The file memory allocation type
  [in] | nsects | The number of free-space sections
  [out] | sect_info | Array of instances of H5F_sect_info_t in which the free-space section information is to be returned

Returns
  Returns the number of free-space sections for the specified free-space manager in the file; otherwise returns a negative value.

H5Fget_free_sections() retrieves free-space section information for the free-space manager with type that is associated with file `file_id`. If type is H5FD_MEM_DEFAULT, this routine retrieves free-space section information for all the free-space managers in the file.

Valid values for `type` are the following:

H5FD_MEM_DEFAULT | The default file memory allocation type
H5FD_MEM_SUPER | File memory allocated for Superblock
H5FD_MEM_BTREE | File memory allocated for B-tree
H5FD_MEM_DRAW | File memory allocated for raw data
H5FD_MEM_GHEAP | File memory allocated for Global Heap
H5FD_MEM_LHEAP | File memory allocated for Local Heap
H5FD_MEM_OHDR | File memory allocated for Object Header

H5F_sect_info_t is defined as follows (in H5Fpublic.h):

typedef struct H5F_sect_info_t {
haddr_t addr;
hsize_t size;
} H5F_sect_info_t;

This routine retrieves free-space section information for `nsects` sections or, at most, the maximum number of sections in the specified free-space manager. If the number of sections is not known, a preliminary H5Fget_free_sections() call can be made by setting `sect_info` to NULL and the total number of free-space sections for the specified free-space manager will be returned. Users can then allocate space for entries in `sect_info`, each of which is defined as an H5F_sect_info_t `struct`.

Attention
  Failure Modes: This routine will fail when the following is true:
  - The library fails to retrieve the file creation property list associated with `file_id`.
  - If the parameter `sect_info` is non-null, but the parameter `nsects` is equal to 0.
  - The library fails to retrieve free-space section information for the file.

Since
  1.10.0

## ◆ H5Fget_freespace()

hssize_t H5Fget_freespace | ( | hid_t | file_id | ) |

Returns the amount of free space in a file (in bytes).

Parameters

  [in] | file_id | File identifier

Returns
  Returns the amount of free space in the file if successful; otherwise returns a negative value.

Given the identifier of an open file, `file_id`, H5Fget_freespace() returns the amount of space that is unused by any objects in the file.

The interpretation of this number depends on the configured free space management strategy. For example, if the HDF5 library only tracks free space in a file from a file open or create until that file is closed, then this routine will report the free space that has been created during that interval.

Since
  1.6.1

## ◆ H5Fget_info1()

herr_t H5Fget_info1 | ( | hid_t | obj_id,
|  | H5F_info1_t * | file_info )

Retrieves global file information.

Parameters

  [in] | obj_id | Object identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute.
  [out] | file_info | Buffer for global file information

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

Deprecated
  This function has been renamed from H5Fget_info() and is deprecated in favor of the macro H5Fget_info or the function H5Fget_info2().

H5Fget_info1() returns global information for the file associated with the object identifier `obj_id` in the H5F_info1_t `struct` named `file_info`.

`obj_id` is an identifier for any object in the file of interest.

H5F_info1_t struct is defined in H5Fpublic.h as follows:

typedef struct H5F_info1_t {
hsize_t super_ext_size;
struct {
hsize_t hdr_size;
H5_ih_info_t msgs_info;
} sohm;
} H5F_info1_t;

`super_ext_size` is the size of the superblock extension.

The `sohm` sub-struct contains shared object header message information as follows:

- `hdr_size` is the size of the shared object header message.
- `msgs_info` is an H5_ih_info_t struct defined in H5public.h as follows:
  typedef struct H5_ih_info_t {
  hsize_t index_size;
  hsize_t heap_size;
  } H5_ih_info_t;

- `index_size` is the summed size of all the shared object header indexes. Each index might be either a B-tree or a list.

Version
  1.10.0 Function H5Fget_info() renamed to H5Fget_info1() and deprecated in this release.

Since
  1.8.0

## ◆ H5Fget_info2()

herr_t H5Fget_info2 | ( | hid_t | obj_id,
|  | H5F_info2_t * | file_info )

Retrieves global file information.

Parameters

  [in] | obj_id | Object identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute.
  [out] | file_info | Buffer for global file information

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fget_info2() returns global information for the file associated with the object identifier `obj_id` in the H5F_info2_t `struct` named `file_info`.

`obj_id` is an identifier for any object in the file of interest.

H5F_info2_t struct is defined in H5Fpublic.h as follows:

typedef struct H5F_info2_t {
struct {
unsigned version;
hsize_t super_size;
hsize_t super_ext_size;
} super;
struct {
unsigned version;
hsize_t meta_size;
hsize_t tot_space;
} free;
struct {
unsigned version;
hsize_t hdr_size;
H5_ih_info_t msgs_info;
} sohm;
} H5F_info2_t;

The `super` sub-struct contains the following information:

- `vers` is the version number of the superblock.
- `super_size` is the size of the superblock.
- `super_ext_size` is the size of the superblock extension.

The `free` sub-struct contains the following information:

- vers is the version number of the free-space manager.
- `hdr_size` is the size of the free-space manager header.
- `tot_space` is the total amount of free space in the file.

The `sohm` sub-struct contains shared object header message information as follows:

- `vers` is the version number of the shared object header information.
- `hdr_size` is the size of the shared object header message.
- `msgs_info` is an H5_ih_info_t struct defined in H5public.h as follows:
  typedef struct H5_ih_info_t {
  hsize_t index_size;
  hsize_t heap_size;
  } H5_ih_info_t;
- `index_size` is the summed size of all the shared object header indexes. Each index might be either a B-tree or a list.
- `heap_size` is the size of the heap.

Since
  1.10.0

## ◆ H5Fget_intent()

herr_t H5Fget_intent | ( | hid_t | file_id,
|  | unsigned * | intent )

Determines the read/write or read-only status of a file.

Parameters

  [in] | file_id | File identifier
  [out] | intent | Access mode flag as originally passed with H5Fopen()

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

Given the identifier of an open file, `file_id`, H5Fget_intent() retrieves the intended access mode" flag passed with H5Fopen() when the file was opened.

The value of the flag is returned in `intent`. Valid values are as follows:

H5F_ACC_RDWR | File was opened with read/write access.
H5F_ACC_RDONLY | File was opened with read-only access.
H5F_ACC_SWMR_WRITE | File was opened with read/write access for a single-writer/multiple-reader (SWMR) scenario. Note that the writer process must also open the file with the H5F_ACC_RDWR flag.
H5F_ACC_SWMR_READ | File was opened with read-only access for a single-writer/multiple-reader (SWMR) scenario. Note that the reader process must also open the file with the H5F_ACC_RDONLY flag.

Note
  The function will not return an error if intent is NULL; it will simply do nothing.

Version
  1.10.0 Function enhanced to work with SWMR functionality.

Since
  1.8.0

## ◆ H5Fget_name()

ssize_t H5Fget_name | ( | hid_t | obj_id,
|  | char * | name,
|  | size_t | size )

Retrieves name of file to which object belongs.

Parameters

  [in] | obj_id | Object identifier
  [out] | name | Buffer for the file name
  [in] | size | The size, in bytes, of the `name` buffer. Must be the size of the file name in bytes plus 1 for a NULL terminator

Returns
  Returns the length of the file name if successful; otherwise returns a negative value.

H5Fget_name() retrieves the name of the file to which the object `obj_id` belongs. The object can be a file, group, dataset, attribute, or named datatype.

Up to `size` characters of the file name are returned in `name`; additional characters, if any, are not returned to the user application.

Up to `size` characters of the file name are returned in `name`; additional characters, if any, are not returned to the user application.
If the length of the file name, which determines the required value of `size`, is unknown, a preliminary call to H5Fget_name() with the last two parameters set to NULL and zero respectively can be made. The return value of this call will be the size in bytes of the file name. That value, plus 1 for a NULL terminator, must then be assigned to `size` for a second H5Fget_name() call, which will retrieve the actual file name.

If an error occurs, the buffer pointed to by `name` is unchanged and the function returns a negative value.

Since
  1.6.3

## ◆ H5Fget_obj_count()

ssize_t H5Fget_obj_count | ( | hid_t | file_id,
|  | unsigned | types )

Returns the number of open object identifiers for an open file.

Parameters

  [in] | file_id | File identifier or H5F_OBJ_ALL for all currently-open HDF5 files
  [in] | types | Type of object for which identifiers are to be returned

Returns
  Returns the number of open objects if successful; otherwise returns a negative value.

Given the identifier of an open file, file_id, and the desired object types, types, H5Fget_obj_count() returns the number of open object identifiers for the file.

To retrieve a count of open identifiers for open objects in all HDF5 application files that are currently open, as well as transient datatype objects that are not associated with any file, pass the value H5F_OBJ_ALL in `file_id`.

The types of objects to be counted are specified in types as follows:

H5F_OBJ_FILE | Files only
H5F_OBJ_DATASET | Datasets only
H5F_OBJ_GROUP | Groups only
H5F_OBJ_DATATYPE | Datatypes only. If `file_id` is H5F_OBJ_ALL, this will count committed and transient datatypes. Otherwise, it will only count committed datatypes.
H5F_OBJ_ATTR | Attributes only
H5F_OBJ_ALL | All of the above
H5F_OBJ_LOCAL | Restrict search to objects opened through current file identifier.

Attention
  H5F_OBJ_LOCAL does not stand alone; it is effective only when used in combination with one or more of the preceding types. For example, H5F_OBJ_DATASET | H5F_OBJ_GROUP | H5F_OBJ_LOCAL would count all datasets and groups opened through the current file identifier.

Multiple object types can be combined with the logical `OR` operator (|). For example, the expression ``(H5F_OBJ_DATASET|H5F_OBJ_GROUP) would call for datasets and groups.

Version
  1.6.8, 1.8.2 Function return type changed to `ssize_t`.
  1.6.5 H5F_OBJ_LOCAL has been added as a qualifier on the types of objects to be counted. H5F_OBJ_LOCAL restricts the search to objects opened through current file identifier.

Since
  1.6.0

## ◆ H5Fget_obj_ids()

ssize_t H5Fget_obj_ids | ( | hid_t | file_id,
|  | unsigned | types,
|  | size_t | max_objs,
|  | hid_t * | obj_id_list )

Returns a list of open object identifiers.

Parameters

  [in] | file_id | File identifier or H5F_OBJ_ALL for all currently-open HDF5 files
  [in] | types | Type of object for which identifiers are to be returned
  [in] | max_objs | Maximum number of object identifiers to place into `obj_id_list`
  [out] | obj_id_list | Pointer to the returned buffer of open object identifiers

Returns
  Returns number of objects placed into `obj_id_list` if successful; otherwise returns a negative value.

Given the file identifier `file_id` and the type of objects to be identified, types, H5Fget_obj_ids() returns the list of identifiers for all open HDF5 objects fitting the specified criteria.

To retrieve identifiers for open objects in all HDF5 application files that are currently open, pass the value H5F_OBJ_ALL in `file_id`.

The types of object identifiers to be retrieved are specified in types using the codes listed for the same parameter in H5Fget_obj_count().

To retrieve a count of open objects, use the H5Fget_obj_count() function. This count can be used to set the `max_objs` parameter.

Version
  1.8.2 Function return type changed to `ssize_t` and `max_objs` parameter datatype changed to `size_t`.
  1.6.8 Function return type changed to `ssize_t` and `max_objs` parameter datatype changed to `size_t`.

Since
  1.6.0

## ◆ H5Fget_page_buffering_stats()

herr_t H5Fget_page_buffering_stats | ( | hid_t | file_id,
|  | unsigned | accesses[2],
|  | unsigned | hits[2],
|  | unsigned | misses[2],
|  | unsigned | evictions[2],
|  | unsigned | bypasses[2] )

Retrieves statistics about page access when it is enabled.

Parameters

  [in] | file_id | File identifier
  [out] | accesses | Two integer array for the number of metadata and raw data accesses to the page buffer
  [out] | hits | Two integer array for the number of metadata and raw data hits in the page buffer
  [out] | misses | Two integer array for the number of metadata and raw data misses in the page buffer
  [out] | evictions | Two integer array for the number of metadata and raw data evictions from the page buffer
  [out] | bypasses | Two integer array for the number of metadata and raw data accesses that bypass the page buffer

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fget_page_buffering_stats() retrieves page buffering statistics such as the number of metadata and raw data accesses (`accesses`), hits (`hits`), misses (`misses`), evictions (`evictions`), and accesses that bypass the page buffer (`bypasses`).

Since
  1.10.1

## ◆ H5Fget_vfd_handle()

herr_t H5Fget_vfd_handle | ( | hid_t | file_id,
|  | hid_t | fapl,
|  | void ** | file_handle )

Returns pointer to the file handle from the virtual file driver.

Parameters

  [in] | file_id | File identifier
  [in] | fapl | File access property list identifier
  [out] | file_handle | Pointer to the file handle being used by the low-level virtual file driver

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

Given the file identifier `file_id` and the file access property list `fapl_id`, H5Fget_vfd_handle() returns a pointer to the file handle from the low-level file driver currently being used by the HDF5 library for file I/O.

Note
  For most drivers, the value of `fapl_id` will be H5P_DEFAULT. For the `FAMILY` or `MULTI` drivers, this value should be defined through the property list functions: H5Pset_family_offset() for the `FAMILY` driver and H5Pset_multi_type() for the `MULTI` driver

Since
  1.6.0

## ◆ H5Fincrement_filesize()

herr_t H5Fincrement_filesize | ( | hid_t | file_id,
|  | hsize_t | increment )

Sets the file' EOA to the maximum of (EOA, EOF) + increment.

Parameters

  [in] | file_id | File identifier
  [in] | increment | The number of bytes to be added to the maximum of (EOA, EOF)

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fincrement_filesize() sets the file's EOA to the maximum of (EOA, EOF) + `increment`. The EOA is the end-of-file address stored in the file's superblock while EOF is the file's actual end-of-file.

Since
  1.10.2

## ◆ H5Fis_accessible()

htri_t H5Fis_accessible | ( | const char * | container_name,
|  | hid_t | fapl_id )

Checks if a file can be opened with a given file access property list.

Parameters

  [in] | container_name | Name of a file
  [in] | fapl_id | File access property list identifier

Returns
  Returns zero (false), a positive (true) or a negative (failure) value.

H5Fis_accessible() checks if the file specified by `container_name` can be opened with the file access property list `fapl_id`.

Note
  The H5Fis_accessible() function enables files to be checked with a given file access property list, unlike H5Fis_hdf5(), which only uses the default file driver when opening a file.

Note
  On Windows, HDF5 assumes that a file name string is UTF-8 encoded and will attempt to convert it to UTF-16 before calling wide-character Windows API functions. If a file name string cannot be converted to UTF-16, the equivalent non-wide-character Windows API functions will be used, causing a file name string to be interpreted according to the active Windows code page. If an application desires that the active Windows code page be preferred, the environment variable HDF5_PREFER_WINDOWS_CODE_PAGE can be set to the value '1' or 'TRUE' (case-insensitive).

Since
  1.12.0

## ◆ H5Fis_hdf5()

htri_t H5Fis_hdf5 | ( | const char * | file_name | ) |

Determines whether a file is in the HDF5 format.

Parameters

  [in] | file_name | File name

Returns
  Returns zero (false), a positive (true) or a negative (failure) value.

H5Fis_hdf5() determines whether a file is in the HDF5 format.

Note
  On Windows, HDF5 assumes that a file name string is UTF-8 encoded and will attempt to convert it to UTF-16 before calling wide-character Windows API functions. If a file name string cannot be converted to UTF-16, the equivalent non-wide-character Windows API functions will be used, causing a file name string to be interpreted according to the active Windows code page. If an application desires that the active Windows code page be preferred, the environment variable HDF5_PREFER_WINDOWS_CODE_PAGE can be set to the value '1' or 'TRUE' (case-insensitive).

Since
  1.0.0

Deprecated
  1.12.0 Deprecated in favor of the function H5Fis_accessible()

## ◆ H5Fmount()

herr_t H5Fmount | ( | hid_t | loc_id,
|  | const char * | name,
|  | hid_t | child,
|  | hid_t | plist )

Mounts an HDF5 file.

Parameters

  [in] | loc_id | Location identifier. The identifier may be that of a file or group.
  [in] | name | Name of the group onto which the file specified by `child` is to be mounted
  [in] | child | File identifier
  [in] | plist | File mount property list identifier. Pass H5P_DEFAULT!

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fmount() mounts the file specified by `child` onto the object specified by `loc` and `name` using the mount properties `plist` If the object specified by `loc` is a dataset, named datatype or attribute, then the file will be mounted at the location where the attribute, dataset, or named datatype is attached.

Example
  {
  hid_t file = H5Fopen("f11.h5", H5F_ACC_RDWR, H5P_DEFAULT);
  if (file != H5I_INVALID_HID) {
  hid_t group, child;
  if ((group = H5Gcreate1(file, "mount_point", H5P_DEFAULT)) != H5I_INVALID_HID) {
  if ((child = H5Fopen("f1.h5", H5F_ACC_RDONLY, H5P_DEFAULT)) != H5I_INVALID_HID) {
  if (H5Fmount(group, ".", child, H5P_DEFAULT) >= 0) {
  // do something useful w/ the mounted file
  }
  else {
  ret_val = EXIT_FAILURE;
  perror("H5Fmount failed.");
  }
  H5Fclose(child);
  }
  H5Gclose(group);
  }
  H5Fclose(file);
  }
  else
  ret_val = EXIT_FAILURE;
  }

Note
  To date, no file mount properties have been defined in HDF5. The proper value to pass for `plist` is H5P_DEFAULT, indicating the default file mount property list.

Since
  1.0.0

## ◆ H5Fopen()

hid_t H5Fopen | ( | const char * | filename,
|  | unsigned | flags,
|  | hid_t | fapl_id )

Opens an existing HDF5 file.

Parameters

  [in] | filename | Name of the file to be opened
  [in] | flags | File access flags. Allowable values are: H5F_ACC_RDWR: Allows read and write access to file H5F_ACC_RDONLY: Allows read-only access to file H5F_ACC_RDWR ``| H5F_ACC_SWMR_WRITE: Indicates that the file is open for writing in a single-writer/multi-writer (SWMR) scenario. H5F_ACC_RDONLY ``| H5F_ACC_SWMR_READ: Indicates that the file is open for reading in a single-writer/multi-reader (SWMR) scenario. An additional flag, H5F_ACC_DEBUG, prints debug information. This flag can be combined with one of the above values using the bit-wise OR operator (``|), but it is used only by HDF5 library developers; it is neither tested nor supported for use in applications.
  [in] | fapl_id | File access property list identifier

Returns
  Returns a file identifier if successful; otherwise returns H5I_INVALID_HID.

H5Fopen() is the primary function for accessing existing HDF5 files. This function opens the named file in the specified access mode and with the specified access property list.

Note that H5Fopen() does not create a file if it does not already exist; see H5Fcreate().

The `filename` parameter specifies the name of the file to be opened.

The `fapl_id` parameter specifies the file access property list. The use of H5P_DEFAULT specifies that default I/O access properties are to be used.

The `flags` parameter specifies whether the file will be opened in read-write or read-only mode, H5F_ACC_RDWR or H5F_ACC_RDONLY, respectively. More complex behaviors of file access are controlled through the file-access property list.

The return value is a file identifier for the open file; this file identifier should be closed by calling H5Fclose() when it is no longer needed.

Example
  {
  unsigned mode = H5F_ACC_RDONLY;
  char name[] = "f11.h5";
  hid_t file = H5Fopen(name, mode, H5P_DEFAULT);
  if (file != H5I_INVALID_HID)
  H5Fclose(file);
  else
  ret_val = EXIT_FAILURE;
  }

Note
  H5F_ACC_RDWR and H5F_ACC_RDONLY are mutually exclusive; use exactly one.

Note
  On Windows, HDF5 assumes that a file name string is UTF-8 encoded and will attempt to convert it to UTF-16 before calling wide-character Windows API functions. If a file name string cannot be converted to UTF-16, the equivalent non-wide-character Windows API functions will be used, causing a file name string to be interpreted according to the active Windows code page. If an application desires that the active Windows code page be preferred, the environment variable HDF5_PREFER_WINDOWS_CODE_PAGE can be set to the value '1' or 'TRUE' (case-insensitive).

Attention
  Special cases — Multiple opens: A file can often be opened with a new H5Fopen() call without closing an already-open identifier established in a previous H5Fopen() or H5Fcreate() call. Each such H5Fopen() call will return a unique identifier and the file can be accessed through any of these identifiers as long as the identifier remains valid. In such multiply-opened cases, the open calls must use the same flags argument and the file access property lists must use the same file close degree property setting (see the external link discussion below and H5Pset_fclose_degree()).
  In some cases, such as files on a local Unix file system, the HDF5 library can detect that a file is multiply opened and will maintain coherent access among the file identifiers.
  But in many other cases, such as parallel file systems or networked file systems, it is not always possible to detect multiple opens of the same physical file. In such cases, HDF5 will treat the file identifiers as though they are accessing different files and will be unable to maintain coherent access. Errors are likely to result in these cases. While unlikely, the HDF5 library may not be able to detect, and thus report, such errors.
  It is generally recommended that applications avoid multiple opens of the same file.
  Special restriction on multiple opens of a file first opened by means of an external link: When an external link is followed, the external file is always opened with the weak file close degree property setting, H5F_CLOSE_WEAK (see H5Lcreate_external() and H5Pset_fclose_degree()). If the file is reopened with H5Fopen while it remains held open from such an external link call, the file access property list used in the open call must include the file close degree setting H5F_CLOSE_WEAK or the open will fail.

Version
  1.10.0 The H5F_ACC_SWMR_WRITE and H5F_ACC_SWMR_READ flags were added.

Since
  1.0.0

See also
  H5Fclose()

## ◆ H5Freopen()

hid_t H5Freopen | ( | hid_t | file_id | ) |

Returns a new identifier for a previously-opened HDF5 file.

Parameters

  [in] | file_id | Identifier of a file for which an additional identifier is required

Returns
  Returns a file identifier if successful; otherwise returns H5I_INVALID_HID.

H5Freopen() returns a new file identifier for an already-open HDF5 file, as specified by `file_id`. Both identifiers share caches and other information. The only difference between the identifiers is that the new identifier is not mounted anywhere and no files are mounted on it.

The new file identifier should be closed by calling H5Fclose() when it is no longer needed.

Note
  Note that there is no circumstance under which H5Freopen() can actually open a closed file; the file must already be open and have an active `file_id`. E.g., one cannot close a file with H5Fclose() on `file_id` then use H5Freopen() on `file_id` to reopen it.

Since
  1.0.0

## ◆ H5Freset_page_buffering_stats()

herr_t H5Freset_page_buffering_stats | ( | hid_t | file_id | ) |

Resets the page buffer statistics.

Parameters

  [in] | file_id | File identifier

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Freset_page_buffering_stats() resets the page buffer statistics for a specified file identifier `file_id`.

Since
  1.10.1

## ◆ H5Fset_dset_no_attrs_hint()

herr_t H5Fset_dset_no_attrs_hint | ( | hid_t | file_id,
|  | bool | minimize )

Sets the flag to create minimized dataset object headers.

Parameters

  [in] | file_id | File identifier
  [in] | minimize | Flag indicating whether the library will or will not create minimized dataset object headers

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fset_dset_no_attrs_hint() sets the no dataset attributes hint setting for the file specified by the file identifier `file_id`. If the boolean flag `minimize` is set to `true`, then the library will create minimized dataset object headers in the file. All files that refer to the same file-on-disk will be affected by the most recent setting, regardless of the file identifier/handle (e.g., as returned by H5Fopen()). By setting the `minimize` flag to `true`, the library expects that no attributes will be added to the dataset - attributes can be added, but they are appended with a continuation message, which can reduce performance.

Attention
  This setting interacts with H5Pset_dset_no_attrs_hint(): if either is set to `true`, then the created dataset's object header will be minimized.

Since
  1.10.5

## ◆ H5Fset_latest_format()

herr_t H5Fset_latest_format | ( | hid_t | file_id,
|  | bool | latest_format )

Sets the latest version of the library to be used for writing objects.

Parameters

  [in] | file_id | File identifier
  [in] | latest_format | Latest format flag

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

Since
  1.10.1

Deprecated
  1.10.2 Deprecated in favor of the function H5Fset_libver_bounds()

## ◆ H5Fset_libver_bounds()

herr_t H5Fset_libver_bounds | ( | hid_t | file_id,
|  | H5F_libver_t | low,
|  | H5F_libver_t | high )

Enables the switch of version bounds setting for a file.

Parameters

  [in] | file_id | File identifier
  [in] | low | The earliest version of the library that will be used for writing objects
  [in] | high | The latest version of the library that will be used for writing objects

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

H5Fset_libver_bounds() enables the switch of version bounds setting for an open file associated with `file_id`.

For the parameters `low` and `high`, see the description for H5Pset_libver_bounds().

Example
  {
  unsigned mode = H5F_ACC_RDWR;
  char name[] = "f11.h5";
  hid_t file = H5Fopen(name, mode, H5P_DEFAULT);
  if (file != H5I_INVALID_HID) {
  if (H5Fset_libver_bounds(file, H5F_LIBVER_EARLIEST, H5F_LIBVER_V18) >= 0) {
  // object creation will not exceed HDF5 version 1.8.x
  }
  else
  perror("H5Fset_libver_bounds failed.");
  if (H5Fclose(file) < 0)
  perror("H5Fclose failed.");
  }
  else
  ret_val = EXIT_FAILURE;
  }

Since
  1.10.2

## ◆ H5Funmount()

herr_t H5Funmount | ( | hid_t | loc_id,
|  | const char * | name )

Un-mounts an HDF5 file.

Parameters

  [in] | loc_id | Location identifier. The identifier may be that of a file or group.
  [in] | name | Name of the mount point

Returns
  Returns a non-negative value if successful; otherwise, returns a negative value.

Given a mount point, H5Funmount() dissociates the mount point's file from the file mounted there. This function does not close either file.

The mount point can be either the group in the parent or the root group of the mounted file (both groups have the same name). If the mount point was opened before the mount then it is the group in the parent; if it was opened after the mount then it is the root group of the child.

Since
  1.0.0