21fs Module
21.1Overview
The fs module provides measures to access and modify information in file systems. This is a built-in module, so you can use it without being imported.
21.2Module Function
The fs modules provides following functions:
fs.chdir(pathname:string) {block?}
Changes the current working directory to pathname.
The block would be evaluated if specified, and the working directory would be changed only during that evaluation period.
fs.chmod(mode, pathname:string):map:void:[follow_link]
Changes the access mode of a file specified by pathname.
There are two formats to specify the mode: one is by a number, and another in a string.
When specified in a number, following bits are associated with access permissions:
b8 b7 b6.. Read, write and executable permissions for ownersb5 b4 b3.. Read, write and executable permissions for groupsb2 b1 b0.. Read, write and executable permissions for others
When set to one, each permission is validated.
When specified in a string, it accepts a permission directive in a format of following regular expression
[ugoa]+([-+=][rwx]+)+
It starts with characters that represent target which permissions are modified as described below:
u.. ownersg.. groupso.. othersa.. all users
Then, follows an operation:
-.. remove+.. append=.. set
At last, permission attributes are specified as below:
r.. read permissionw.. write permissionx.. executable permission
If the modification target is a link file, each platform would have different result:
- Linux .. Modifies permissions of the link file itself. Specifying
:follow_linkattribute would modify permsisions of the target file instead. - MacOS .. Modifies permissions of the target file. Attribute
:follow_linkhas no effect. - Windows .. Modifies permissions of the link file. Attribute
:follow_linkhas no effect.
fs.copy(src:string, dst:string):map:void:[overwrite]Copies a file.
An argument src needs to specify a path name of a file that is to be copied while dst can specify a path name of either a file or a directory. If dst is a directory, the file would be copied into that. Otherwise, it would create a copy of src that has a name specified by dst.
If a destination file already exists, an error occurs. Specifying an attribute :overwrite would overwrite an existing one.
fs.cpdir(src:string, dst:string):map:void:[tree]Copies a directory.
Arguments src and dst specify source directory and destination directory respectively. In default, sub directories are not copied.Specifying :tree attribute would copy all the sub directories in the source.
fs.getcwd()fs.mkdir(pathname:string):map:void:[tree]Creates a directory.
If pathname consists of multiple sub directories and some of them still doesn't exist, an error occurs. Specifying :tree attribute would create such directories.
fs.remove(pathname:string):map:voidfs.rename(src:string, dst:string):map:voidfs.rmdir(pathname:string):map:void:[tree]Removes a directory.
If the directory contains sub directories, an error occurs. Specifying :tree attribute would delete such a directory.
21.3fs.stat Class
An instance of fs.stat class contains information about a file or directory on the file system, which includes its full path name, size, creation time and file attributes. A stream instance has a property named stat that is a fs.stat instance when it comes from a file or directory in a file system. You can also get the instance using fs.stat() function.
21.3.1Constructor
fs.stat(pathname:string) {block?}21.3.2Property
A fs.stat instance has the following properties:
| Property | Type | R/W | Explanation |
|---|---|---|---|
pathname |
string |
R | |
dirname |
string |
R | |
filename |
string |
R | |
size |
number |
R | |
uid |
number |
R | |
gid |
number |
R | |
atime |
datetime |
R | |
mtime |
datetime |
R | |
ctime |
datetime |
R | |
isdir |
boolean |
R | |
ischr |
boolean |
R | |
isblk |
boolean |
R | |
isreg |
boolean |
R | |
isfifo |
boolean |
R | |
islnk |
boolean |
R | |
issock |
boolean |
R |