Files I/O


This chapter covers all the basic I/O functions available in Spla. For more functions, please refer to the standard Spla documentation.

Printing to the Screen

The simplest way to produce output is using the << keyword where you can pass zero or more expressions separated by commas. This keyword converts the expressions you pass into a string and writes the result to standard output as follows −

<<'Spla is really a simple language'+ ' and powerfull also';

This produces the following result on your standard screen −

Spla is really a simple language and powerfull also

Reading Keyboard Input

The >> keyword is equivalent to raw_input, except that it assumes that the input is a valid Spla expression and returns the evaluated result to you.

>> x; 

Opening and Closing Files

Until now, you have been reading and writing to the standard input and output. Now, we will see how to use actual data files.

Spla provides basic functions and methods necessary to manipulate files by default. You can do most of the file manipulation using a file object.

The open Function

Before you can read or write a file, you have to open it using Spla's built-in open<> function. This function creates a file object, which would be utilized to call other support methods associated with it.

Syntax

file.open<'/home/spla/Desktop/Release030.txt','w'>;

Here are parameter details −

  • file_name − The file_name argument is a string value that contains the name of the file that you want to access.

  • access_mode − The access_mode determines the mode in which the file has to be opened, i.e., read, write, append, etc. A complete list of possible values is given below in the table. This is an optional parameter and the default file access mode is read .

Here is a list of the different modes of opening a file −

Sr.No. Mode & Description
1

r

Opens a file for reading only. The file pointer is placed at the beginning of the file. This is the default mode.

2

r+

Opens a file for both reading and writing. The file pointer placed at the beginning of the file.

3

w

Opens a file for writing only. Overwrites the file if the file exists. If the file does not exist, creates a new file for writing.

4

w+

Opens a file for both writing and reading. Overwrites the existing file if the file exists. If the file does not exist, creates a new file for reading and writing.

The file Object Attributes

Once a file is opened and you have one file object, you can get various information related to that file.

Here is a list of all the attributes related to a file object −

Sr.No. Attribute & Description
1

file.isClose<>

Returns true if file is closed, false otherwise.

2

file.getMode<>

Returns access mode with which file was opened.

3

file.getName<>

Returns name of the file.

Example

!! Open a file
file.open<'foo.txt', 'wb'>;
<<'Name of the file : '+ file.getName<>;
<<'Closed or not : '+ file.isClosed<>;
<<'Opening mode : '+ file.getMode<>;
file.close<>;

This produces the following result −

Name of the file : foo.txt
Closed or not : False
Opening mode : wb

The close<> Method

The close<> method of a file object flushes any unwritten information and closes the file object, after which no more writing can be done.

Spla automatically closes a file when the reference object of a file is reassigned to another file. It is a good practice to use the close<> method to close a file.

Syntax

file.close<>;

Example

!! Open a file
file.open<'foo.txt', 'wb'>;
<<'Name of the file : '+ file.getName<>;

!! Close opened file
file.close<>;

This produces the following result −

Name of the file : foo.txt

Reading and Writing Files

The file object provides a set of access methods to make our lives easier. We would see how to use read<> and write<> methods to read and write files.

The write<> Method

The write<> method writes any string to an open file. It is important to note that Spla strings can have binary data and not just text.

The write<> method does not add a newline character <'\n'> to the end of the string −

Syntax

file.write<>;

Here, passed parameter is the content to be written into the opened file.

Example

!! Open a file
file.open<'foo.txt', 'w'>;
file.write<'Spla is a great language.\nYeah its great!!\n'>;

!! Close opend file
file.close<>;

The above method would create foo.txt file and would write given content in that file and finally it would close that file. If you would open this file, it would have the following content −

Spla is a great language.
Yeah its great!!

The read<> Method

The read<> method reads a string from an open file. It is important to note that Spla strings can have binary data. apart from text data.

Syntax

file.read<[count]>;

Here, passed parameter is the number of bytes to be read from the opened file. This method starts reading from the beginning of the file and if count is missing, then it tries to read as much as possible, maybe until the end of file.

Example

Let us take a file foo.txt, which we created above.

!! Open a file
file..open<'foo.txt', 'r+'>;
str data=file.read<10>;
<<'Read String is : '+ data;

!! Close opened file
file.close<>;

This produces the following result −

Read String is : Spla is

File Positions

The tellPos<> method tells you the current position within the file; in other words, the next read or write will occur at that many bytes from the beginning of the file.

The seek method changes the current file position. The offset argument indicates the number of bytes to be moved. The from argument specifies the reference position from where the bytes are to be moved.

If from is set to 0, the beginning of the file is used as the reference position. If it is set to 1, the current position is used as the reference position. If it is set to 2 then the end of the file would be taken as the reference position.

Example

Let us take a file foo.txt, which we created above.

!! Open a file
file.open<'foo.txt', 'r+'>;
str data=file.read<10>;
<< 'Read String is : ', str>;

!! Check current position
int position =file.tellPos<>;
<<'Current file position : ', position>;

!! Reposition pointer at the beginning once again
position = file.seek<0, BEG>;
data = file.read<10>;
<<'Again read String is : '+ data;

!! Close opened file
fo.close<>

This produces the following result −

Read String is : Spla is
Current file position : 10
Again read String is : Spla is

Renaming and Deleting Files

Spla provides methods that help you perform file-processing operations, such as renaming and deleting files.

To use this module, you need to import it first and then you can call any related functions.

The renameFile<> Method

The renameFile<> method takes two arguments, the current filename and the new filename.

Syntax

renameFile< current_file_name, new_file_name > 

Example

Following is an example to rename an existing file test1.txt

!! Rename a file from test1.txt to test2.txt
rename< 'test1.txt', 'test2.txt' >;

The deleteFile<> Method

You can use the deleteFile<> method to delete files by supplying the name of the file to be deleted as the argument.

Syntax

deleteFile< fileName >

Example

Following is an example to delete an existing file test2.txt

!! Delete file test2.txt
deleteFile<'text2.txt'>;