VFXArabia | The VFX creation of Alaa Alnahlawi (علاء النحلاوي)

Read an external text file:

My friend asked me how to read and external text file using maxscript. He wanted to create a tool that grab system directory paths from an external predefined text file.

I did a small search and the result for that was something calledFilestream which by definition is:

A FileStream class implements text file input and output in MAXScript. A FileStream value represents an open text file in MAXScript. Text file I/O is performed by calling functions on the FileStream value.

It has a bunch of commands to deal with external files but I only need 5 of them, what I wanna do is:

-Open the file.

-Count the lines.

-Grab each line and append it to an array or assign it to a variable (putting in mind that each line holds only one path).

-Close the file.

First I will assume that your text file that holds the paths is located in D:\temp\test.txt

and let's say it contains:

Note:

In this tutorial you will learn how to read from an external file, but what about writing to that file. To know how check out this tutorial:

After opening the file we will start going through the lines and assign each path to an array item, here will use two Filestream commands:

- (eof) command returns true if there is no more data in the file, false otherwise. this will help us in creating a loop for all the lines

- (readline) This one will read the next line each time it's executed. It's worth mentioning that this command will convert the line in the text file into a string so you can't execute it.

while not eof file do
( r= readLine file --read the first line and store as a string it in r append paths r --append the first line to paths array line_cnt += 1 --add 1 to the counter)

Most of the work is done by now, and all of the paths are stored in the array.

We will use now the final Filestream two command:

(seek) I will use it to reset the file i.e if you wanna use the readline command after our loop the reading will start from the begining again, bare in mind it's not nessesary to use it in our case but it's a good practice.

(Close) Flushes the memory buffers and closes the file, so you can access it from another program and modify it.