该模块提供了一个文件系统API,用于处理路径,目录,文件,链接以及输入和输出流的构造。 它遵循 CommonJS Filesystem/A 提议。
// Writes a simple text file
var fs = require('fs');
if (!fs.exists('test.txt')) {
var textStream = fs.open('test.txt', {
write: true,
binary: false
});
try {
textStream.write('Hello World!');
textStream.flush();
} finally {
textStream.close();
}
console.log('Wrote test.txt');
} else {
console.error('test.txt already exists.');
}
Path构造函数。 Path是用于处理路径的可链接速记。
将给定源路径的相对路径返回到此路径。 等同于 fs.Path(fs.relative(source, this))
.
String | target |
加入这个path的路径列表。
返回此路径中所有文件的名称,按词汇顺序排列并包装在Path对象中。
解决这个path.
将此路径的相对路径返回给定的目标路径。 等同于 fs.Path(fs.relative(this, target))
.
String | target |
这是一个非标准扩展,不是 CommonJS Filesystem/A 的一部分。
通过针对当前工作目录解析给定路径绝对路径。
>> fs.absolute('foo/bar/test.txt');
'/Users/username/Desktop/working-directory/foo/bar/test.txt'
String | path | the path to resolve |
String | the absolute path |
返回给定路径的基本名称。 这是删除了任何主要目录组件的路径。 如果指定,则还要删除尾随扩展。
>> fs.base('/a/b/c/foosomeext', 'someext');
'foo'
String | path | the full path |
String | ext | an optional extension to remove |
String | the basename |
返回给定抽象路径的规范路径。 规范路径既是绝对路径又是内在路径,所有引用给定文件的路径(无论是否存在)都具有相同的相应规范路径。
String | path | a file path |
String | the canonical path |
更改指定文件的权限。
String | path | |
Number|String|java.util.Set<PosixFilePermission> | permissions | the POSIX permissions |
Deprecated!
工作目录始终与JVM进程相关。因此,运行时不能更改工作目录。此功能已弃用,可能会在未来版本的RingoJS中删除。
使用 changeWorkingDirectory() 会引发异常并记录错误。
String | path | the new working directory |
从一个文件读取数据并使用二进制模式将其写入另一个文件。如果存在,则替换现有文件。
// Copies file from a temporary upload directory into /var/www
fs.copy('/tmp/uploads/fileA.txt', '/var/www/fileA.txt');
String | from | original file |
String | to | copy to create |
将文件从源路径复制到目标路径。源路径下面的文件被复制到相对于目标路径的相应位置,到目录的符号链接被复制但不被传入。
Before:
└── foo
├── bar
│ └── example.m4a
└── baz
// Copy foo
fs.copyTree('./foo', './foo2');
After:
├── foo
│ ├── bar
│ │ └── example.m4a
│ └── baz
└── foo2
├── bar
│ └── example.m4a
└── baz
String | from | the original tree |
String | to | the destination for the copy |
返回给定路径的 dirname。这是删除了任何尾随非目录组件的路径。
>> fs.directory('/Users/username/Desktop/example/test.txt');
'/Users/username/Desktop/example'
String | path |
String | the parent directory path |
返回给定路径的扩展名。这就是给定路径的基本名称中最后一个点的后面的所有内容,包括最后一个点。如果不存在有效的扩展名,则返回空字符串。
>> fs.extension('test.txt');
'.txt'
String | path |
String | the file's extension |
返回给定文件的组名。
String | path |
String | the group's name, or null if not possible to determine |
在引用源路径的目标路径上创建一个硬链接。具体实现取决于文件系统和操作系统。
String | existing | path to an existing file, therefore the target of the link |
String | link | the link to create pointing to an existing path |
String | the path to the link |
检查给定的路径名是否是绝对的。这是一个非标准扩展,不是 CommonJS Filesystem/A 的一部分。
>> fs.isAbsolute('../../');
false
>> fs.isAbsolute('/Users/username/Desktop/example.txt');
true
String | path | the path to check |
Boolean | true if path is absolute, false if not |
如果 path 指定的文件存在并且是一个目录,则返回 true。
String | path | the file path |
Boolean | whether the file exists and is a directory |
如果 path 指定的文件存在并且是常规文件,则返回 true。
String | path | the file path |
Boolean | whether the file exists and is a file |
如果目标文件是符号链接,则返回true,否则返回false。
String | path | the file path |
Boolean | true if the given file exists and is a symbolic link |
如果path指定的文件存在并且可以打开以供读取,则返回true。
String | path | the file path |
Boolean | whether the file exists and is readable |
检查给定的路径名是否相对(即不是绝对的)。这是一个非标准扩展,不是 CommonJS Filesystem/A 的一部分。
String | path | the path to check |
Boolean | true if path is relative, false if not |
如果 path 指定的文件存在并且可以打开以写入,则返回 true。
String | path | the file path |
Boolean | whether the file exists and is writable |
返回一个生成目录文件名的 Rhino 特定的生成器。不能保证生成的字符串是以任何特定的顺序。
// Iterates over the current working directory
for (var name in fs.iterate(".")) {
console.log(name);
}
String | path | a directory path |
使用本地文件系统的路径分隔符加入路径元素列表。空路径元素(空,未定义和空字符串)将被跳过。所有非字符串路径元素都将被转换为字符串。结果没有标准化,所以 join("..", "foo")
返回 "../foo"
。
// build path to the config.json file
var fullPath = fs.join(configDir, "config.json");
String | the joined path |
返回文件上次修改为Date对象的时间。
String | path | the file path |
Date | the date the file was last modified |
返回给定目录中命名文件和目录的字符串数组。不能保证字符串是以任何特定的顺序。
var names = fs.list('/usr/local/');
names.forEach(function(name) {
var fullPath = fs.join(dir, name);
if (fs.isFile(fullPath)) {
// do something with the file
}
});
String | path | the directory path |
Array | an array of strings with the files, directories, or symbolic links |
如深度优先遍历发现的那样,返回包含给定路径下面(包括)所有目录的数组。目录中的条目按字词顺序排序。不会遍历到目录的符号链接。
// File system tree of the current working directory:
.
└── foo
└── bar
└── baz
fs.listDirectoryTree('.');
// returned array:
[ '', 'foo', 'foo/bar', 'foo/bar/baz' ]
String | path | the path to discover |
Array | array of strings with all directories lexically sorted |
如深度优先遍历所发现的,返回包含给定路径下面(包括)所有路径(文件,目录等)的数组。目录中的条目按字词顺序排序。符号链接到目录被返回,但没有遍历到。
// File system tree of the current working directory:
.
├── foo
│ └── bar
│ └── baz
├── musicfile.m4a
└── test.txt
fs.listTree('.');
// returned array:
['', 'foo', 'foo/bar', 'foo/bar/baz', 'musicfile.m4a', 'test.txt']
String | path | the path to list |
Array | array of strings with all discovered paths |
创建一个由 path 指定的单个目录。如果因任何原因无法创建目录,则会引发错误。这包括如果路径的父目录不存在。如果将权限参数传递给此函数,则它将用于创建在创建目录期间应用于给定路径的 Permissions 实例。
String | path | the file path |
Number|String|java.util.Set<PosixFilePermission> | permissions | optional the POSIX permissions |
创建由 path 指定的目录,包括任何缺少的父目录。
Before:
└── foo
fs.makeTree('foo/bar/baz/');
After:
└── foo
└── bar
└── baz
String | path | the path of the tree to create |
将文件从源文件移动到目标文件。如果目标已经存在,则将其替换为源文件。
// Moves file from a temporary upload directory into /var/www
fs.move('/tmp/uploads/fileA.txt', '/var/www/fileA.txt');
String | source | the source path |
String | target | the target path |
通过删除'.'来标准化路径尽可能简化'..'组件。
>> fs.normal('../redundant/../foo/./bar.txt');
'../foo/bar.txt'
String | path |
String | the normalized path |
根据选项参数打开与读取或写入路径对应的文件。返回二进制流或文本流。
options参数可能包含以下属性:
而不是选项对象,可以提供具有以下模式的字符串:
所以一个选项对象 {read:true,binary:true} 和模式字符串 'rb' 在功能上是等效的。注意:不支持 CommonJS提出的选项 canonical 和 exclusive。
// Opens a m4a file in binary mode
var m4aStream = fs.open('music.m4a', {
binary: true,
read: true
});
// The equivalent call with options as string
var m4aStream = fs.open('music.m4a', 'br');
// Opens a text file
var textStream = fs.open('example.txt', { read: true });
// The equivalent call with options as string
var textStream = fs.open('example.txt', 'r');
String | path | the file path |
Object|String | options | options as object properties or as mode string |
Stream|TextStream | a |
以二进制模式打开与读取或写入路径对应的文件。 options 参数可能包含以下属性:
String | path | the file path |
Object | options | options |
Stream |
返回给定文件的所有者的用户名。
String | path |
String | the username of the owner, or null if not possible to determine |
创建没有new关键字的新Path的简写。
如果文件系统支持 POSIX,则返回给定路径的 POSIX 文件权限。
String | path |
PosixFilePermission the POSIX permissions for the given path |
读取与路径相对应的文件的内容。根据 options 参数返回一个 String 或 ByteString 对象。该功能支持与 open() 相同的选项。
String | path | the file path |
Object | options | optional options |
String|Binary | the content of the file |
通过严格遍历('..')来找到两个路径的共同祖先,从而建立链接源与目标的相对路径。如果省略目标,则将路径返回到当前工作目录中的源。
>> fs.relative('foo/bar/', 'foo/baz/');
'../baz/'
>> fs.relative('foo/bar/', 'foo/bar/baz/');
'baz/'
String | source | |
String | target |
String | the path needed to change from source to target |
删除给定路径中的文件。如果路径不是文件或文件的符号链接,则会引发错误。
String | path | the path of the file to remove. |
删除由路径标识的文件或目录。如果路径是目录而不是空的,则会引发错误。
String | path | the directory path |
删除指定路径指向的元素。如果路径指向一个目录,则该目录的所有成员都会递归移除。
// File system tree of the current working directory:
├── foo
│ └── bar
│ └── baz
├── musicfile.m4a
└── test.txt
fs.removeTree('foo');
After:
├── musicfile.m4a
└── test.txt
String | path | the element to delete recursively |
加入一个路径列表,从一个空的位置开始,迭代地“行走”到每个给定的路径。正确地考虑相对路径和绝对路径。
>> fs.resolve('../.././foo/file.txt', 'bar/baz/', 'test.txt');
'../../foo/bar/baz/test.txt'
String... | paths... | the paths to resolve |
String | the joined path |
返回两个路径是否通过符号链接或硬链接引用同一存储(文件或目录),以便修改其中一个会修改另一个。
String | pathA | the first path |
String | pathB | the second path |
Boolean | true iff the two paths locate the same file |
返回两个路径是否引用同一文件系统的实体。
String | pathA | the first path |
String | pathB | the second path |
Boolean | true if same file system, otherwise false |
以字节为单位返回文件的大小,如果路径不对应于可访问的路径,或者不是常规文件或链接,则返回异常。
String | path | the file path |
Number | the file size in bytes |
将给定路径拆分为路径组件数组。
>> fs.split('/Users/someuser/Desktop/subdir/test.txt');
[ '', 'Users', 'someuser', 'Desktop', 'subdir', 'test.txt' ]
String | path |
Array | the path components |
在引用源路径的目标路径上创建符号链接。具体实现取决于文件系统和操作系统。
String | existing | path to an existing file, therefore the target of the link |
String | link | the link to create pointing to an existing path |
String | the path to the symbolic link |
将给定路径上文件或目录的修改时间设置为指定时间或当前时间。如果没有文件或目录存在,使用默认权限在给定路径创建一个空文件。
String | path | the file path |
Date | mtime | optional date |
打开,写入,刷新和关闭文件,编写给定的内容。 如果内容是来自二进制模块的 ByteArray 或 ByteString,则隐含二进制模式。
String | path | |
ByteArray|ByteString|String | content | |
Object | options |