Read and Write in a local file with Deno

In this blog, we will see how we can read and write into a local file with the help of Deno First, we will create a program which will read multiple quotes from…

In this blog, we will see how we can read and write into a local file with the help of Deno

  • First, we will create a program which will read multiple quotes from a text file and then print a random quote on our screen
  • Then we will take input from the user in the command line and write those inputs in a text file

Before You Get Started

This tutorial assumes you have basic knowledge about Deno and you have latest Deno version installed on your system, if you haven't installed Deno on your system or never ran Deno code please look at this great introductory blog - Hello world with Deno

Part 1: Read a file and print text out of it

First, add a file called quotes.txt in the folder you want to run the Deno code, We will read these quotes with the help of Deno

Don't worry about what anybody else is going to do. The best way to predict the future is to invent it. - Alan Kay
Premature optimization is the root of all evil in programming. - Donald Knuth
Clarity and brevity sometimes are at odds. When they are, I choose clarity.  - Jacob Kaplan-Moss
Optimism is an occupational hazard of programming; feedback is the treatment. - Kent Beck
A lot of times, people don't know what they want until you show it to them.  - Steve Jobs
Nine people can't make a baby in a month. - Fred Brooks
A clever person solves a problem. A wise person avoids it. - Albert Einstein

And then create an index.ts file in which we will write Deno code, we can also write Deno code in javascript instead of Typescript, but as Deno is built on TypeScript we are using Typescript here

const getQuotes = async (fileName: string): Promise<Array<string>> => {
 const decoder = new TextDecoder("utf-8");

 const text: string = decoder.decode(await Deno.readFile(fileName));
 return text.split("\n");
};

const quotesArr: Array<string> = await getQuotes("quotes.txt");

const randomQuote: string =  quotesArr[Math.floor(Math.random() * quotesArr.length)];
console.log(randomQuote);

In the getQuotes function, we are using Deno.readFile #readfile to read the contents of a file as an array of bytes and using TextDecoder to convert the bytes to string and then splitting it in a string array and return

Then we are just picking a randomQuote with Math.random and console.log that on our screen

To run the above code we need to put --allow-read flag in our command as shown below because we need to access the local filesystem to read the file.

deno run --allow-read index.ts

Deno is secure by default, with no file, network, or environment access unless explicitly enabled. You can run deno run --help to see all the available flags for different permissions

Once your program run initially you will see that Deno is compiling the index.ts file and printing a random quote from quotes.txt, if you run the programme again without changing the code it will not compile it again and will just show another random quote.

deno run --allow-read index.ts
Compile file:///C:/Users/PuneetSingh/Documents/deno_fs/index.ts
Premature optimization is the root of all evil in programming. - Donald Knuth


deno run --allow-read index.ts
A lot of times, people don't know what they want until you show it to them.  - Steve Jobs

Part 2: Create a file and write text in it

Let's create another TypeScript file write.ts and put the below code in it

import { readLines } from "https://deno.land/[email protected]/io/bufio.ts";

console.log('Start typing...');

const encoder = new TextEncoder();
await Deno.writeFile("input.txt", new Uint8Array());

// Listen to stdin input by readLines
for await(const line of readLines(Deno.stdin)) {
   const data = encoder.encode(line+"\n");
   await Deno.writeFile("input.txt", data, {append: true});
   console.log("Wrote the above text in input.txt\n") 
}

In the above code we are using readLines to raed user input line by line, Every time we run the code Deno.writeFile("input.txt", new Uint8Array()) will create an empty input.txt file in the folder.

Then const line of readLines(Deno.stdin) in a loop will wait for the user to input any text, as we will give any input Deno.writeFile with {append: true} is used to append data in input.txt

Let's run the program, Once we run it, whatever text we will give to the program through standard input will be written to input.txt

deno run --allow-write write.ts

Start typing...
This is a demo for Deno
Wrote the above text in input.txt

In this demo, we will write some text in a file
Wrote the above text in input.txt

If you check the input.txt file you will found the content which was given as input

This is a demo for Deno
In this demo, we will write some text in a file

Now you know how to read from a text file and how to write in a text file with Deno, You can found the complete source code used in the above blog on our Github Repo

Puneet Singh

Written by Puneet Singh

Very curious about this world and blogging whenever learning something new

LoginRadius CIAM Platform

Our Product Experts will show you the power of the LoginRadius CIAM platform, discuss use-cases, and prove out ROI for your business.

Book A Demo Today