---
sidebar_label: file
description: |-
  The file function reads the contents of the file at the given path and
  returns them as a string.
---

# `file` Function

`file` reads the contents of a file at the given path and returns them as
a string.

```hcl
file(path)
```

Strings in the OpenTofu language are sequences of Unicode characters, so
this function will interpret the file contents as UTF-8 encoded text and
return the resulting Unicode characters. If the file contains invalid UTF-8
sequences then this function will produce an error.

This function can be used only with files that already exist on disk
at the beginning of an OpenTofu run. Functions do not participate in the
dependency graph, so this function cannot be used with files that are generated
dynamically during an OpenTofu operation. We do not recommend using dynamic
local files in OpenTofu configurations, but in rare situations where this is
necessary you can use
[the `local_file` data source](https://registry.terraform.io/providers/hashicorp/local/latest/docs/data-sources/file)
to read files while respecting resource dependencies.

## Examples

```
> file("${path.module}/hello.txt")
Hello World
```

## Related Functions

* [`filebase64`](../../language/functions/filebase64.mdx) also reads the contents of a given file,
  but returns the raw bytes in that file Base64-encoded, rather than
  interpreting the contents as UTF-8 text.
* [`fileexists`](../../language/functions/fileexists.mdx) determines whether a file exists
  at a given path.
* [`templatefile`](../../language/functions/templatefile.mdx) renders using a file from disk as a
  template.
