Read and Write Files

    • Deno’s runtime API provides the Deno.readTextFile and asynchronous functions for reading and writing entire text files
    • Deno’s standard library provides additional functionality for file system access, for example reading and writing JSON
    • Use and --allow-write permissions to gain access to the file system

    As highlighted in the Deno restricts access to Input / Output by default for security reasons. Therefore when interacting with the filesystem the --allow-read and --allow-write flags must be used with the deno run command.

    The Deno runtime API makes it possible to read text files via the readTextFile() method, it just requires a path string or URL object. The method returns a promise which provides access to the file’s text data.

    Command: deno run --allow-read read.ts

    The Deno standard library enables more advanced interaction with the filesystem and provides methods to read and parse files. The readJson() and readJsonSync() methods allow developers to read and parse files containing JSON. All these methods require is a valid file path string which can be generated using the method.

    Currently some of this functionality is marked as unstable so the --unstable flag is required along with the deno run command.

    Command: deno run --unstable --allow-read read.ts

    The Deno runtime API allows developers to write text to files via the writeTextFile() method. It just requires a file path and text string. The method returns a promise which resolves when the file was successfully written.

    To run the command the --allow-write flag must be supplied to the deno run command.

    The Deno standard library makes available more advanced features to write to the filesystem. For instance it is possible to write an object literal to a JSON file.

    This requires a combination of the ensureFile(), ensureFileSync(), writeJson() and writeJsonSync() methods. In the example below the ensureFileSync() and the writeJsonSync() methods are used. The former checks for the existence of a file, and if it doesn’t exist creates it. The latter method then writes the object to the file as JSON. If asynchronous execution is required use the ensureFile() and writeJson() methods.

    To execute the code the command needs the unstable flag and both the write and read flags.

    Command: deno run --allow-write --allow-read --unstable write.ts