‫This is a really exciting lecture
‫cause you're gonna learn how to read data from files,
‫and also how to write data into files.
‫And we already imported the built-in module
‫that we need for that in the last lecture,
‫and so let's now get rid of this code
‫and start using the FS module.
‫So we use fs.readfilesync, okay.
‫And sync stands for synchronous,
‫and you will start learning about synchronous
‫and asynchronous right in the next video, okay.
‫So this is the synchronous version of file reading.
‫There is also an asynchronous version.
‫So, the read file sync function takes two arguments.
‫The first one is the path to the file that we're reading
‫and then also the character encoded.
‫So, first the path to the file,
‫and the file is in the txt folder,
‫and it is the input one.
‫So, this text that I have here about the avocado
‫is what we're gonna read into a variable.
‫And I'm not sure if you're gonna be able
‫to see this emoji here right on your operating system,
‫but if you're on Windows 8 or Windows 10
‫then that's probably going to work just fine.
‫Okay, so we specified a path there,
‫and there are multiple ways of doing that,
‫but for now I'm gonna go with the simplest one.
‫So, all I'm gonna do is set it in the /txt/input.txt.
‫So again, we're starting at the home folder,
‫which is basically the folder
‫where the index.js file is located,
‫so that's the dot in there,
‫and then we move into the txt folder,
‫and from there input.txt.
‫Then here the second one we have
‫to define the character encoding,
‫which is utf8, usually,
‫at least if you're just using English.
‫Okay, and if you don't specify this,
‫we get back something called a buffer, okay,
‫and that's not really what we want.
‫We really just want the text.
‫And so, calling this function here will now read the data
‫from the file and return it to us,
‫and so we need save that somewhere
‫and we put it into a variable.
‫So let's say textIn because it's a more text input.
‫Okay, and then let's log it to the console
‫just to see if it works.
‫Give it a second, and now we need to run this here again.
‫So in the terminal, I can just use the up arrow
‫to run the previous command.
‫So here it is nodeindex.js again.
‫Hit return, and let's see, and indeed here we go.
‫So here is the content of that file.
‫So, perfect.
‫We now know how to read stuff from files.
‫Congratulations.
‫Okay, but we also want to know how to write to files.
‫So let's create some new variable here with some more text,
‫and then write it into a new file.
‫So let's call that one textOut, so for output.
‫And basically let's just write a string
‫where we will then include this text in.
‫I'm gonna be using a template string here,
‫and at this point I'm gonna assume
‫that you're kinda familiar with the es6 syntax, okay.
‫So we already used const here,
‫which is an es6 way of declaring variables instead of var,
‫and now the template string, which is another es6 thing.
‫So before the es6, if you wanted to add something
‫to text in, you would have to use the plus operator.
‫So let's say, "this is" and then space and then text in.
‫Okay, so you would have to use the plus operator,
‫but if it's a template string it's much easier.
‫All we have to do is use the backticks, then some text,
‫and then into this string you can
‫very easily plug in the variable.
‫So let's say, "This is what we know about the avocado."
‫Then we use this syntax to input the variable, okay,
‫and so basically inside of these curly braces here
‫we can write any JavaScript that we want.
‫So it's not just for plugging in variables straight away,
‫we can also do a lot of calculations
‫or any javaScript expression that we wanted in here.
‫Now, let's say a new line character.
‫So that's a new line, okay.
‫And just to show you that we can actually use JavaScript
‫inside of these curly braces here.
‫So this dollar sign and then curly braces.
‫So date, or actually date like this, dot now.
‫Okay, so that is our string,
‫which has this text here in together with the text
‫that we read before from the variable.
‫And so now let's write that to a new file.
‫So again, we use the FS module,
‫and this time, writeFileSync.
‫Okay, and again we specify the path to the file,
‫and we still want it in the txt folder,
‫and we call it output.txt, okay.
‫And now we have to actually specify
‫what we want to write into that file, right,
‫and tell us the text out variable.
‫And this doesn't return anything meaningful
‫until we don't save anything to any variable.
‫All we do is to finally log something more to the console,
‫like just informing if the file has been written.
‫Okay, so let's test it out again.
‫I'm gonna clear the console with command K.
‫Hit the arrow up key, enter, and maybe you saw it.
‫We here now have this new file called Output,
‫and if I open it up, then you see,
‫"This is what we know about the avocado,"
‫which is what we wrote in the index.js,
‫and then this is the text that came
‫before from the input file, right.
‫Then the new line that we created,
‫and then created on this date basically.
‫So this is date.now,
‫so it's just a timestamp in milliseconds.
‫All right, and this is how you read
‫and write to and from files in Node.JS.