概念
- Deno的运行时接口提供了读写整个文本文件的Deno.readTextFile接口和Deno.writeTextFile接口的异步函数。
- 与Deno的许多API一样,也有同步替代方案。参见《Deno.readTextFileSync》和《》。
- 使用
--Allow-Read
权限和--Allow-Write
权限获取文件系统的访问权限。
概览
与文件系统交互以读写文件是一种常见需求。Deno提供了许多方法来通过标准库)和Deno运行时API.)来实现这一点。
正如Fetch Data example]中强调的那样,出于安全原因,Deno在默认情况下限制对输入/输出的访问。因此,在与文件系统交互时,必须将--Allow-read
命令和--Allow-Write
命令与‘deno run`命令一起使用。
读取文本文件
Deno运行时API可以通过Deno.readTextFile()
方法读取文本文件,它只需要一个路径字符串或URL对象。该方法返回一个Promise,它提供对文件文本数据的访问。
Command: deno run --allow-read read.ts
/**
* read.ts
*/
const text = Deno.readTextFile("./people.json");
text.then((response) => console.log(response));
/**
* Output:
*
* [
* {"id": 1, "name": "John", "age": 23},
* {"id": 2, "name": "Sandra", "age": 51},
* {"id": 5, "name": "Devika", "age": 11}
* ]
*/
写入文件
Deno运行时API允许开发者通过Deno.writeTextFile()
方法向文件写入文本。它只需要文件路径和文本字符串。该方法返回承诺,该承诺将在文件成功写入时进行解析。
要运行该命令,必须将--Allow-Write
命令标志提供给‘deno run
命令。
Command: deno run --allow-write write.ts
/**
* write.ts
*/
const write = Deno.writeTextFile("./hello.txt", "Hello World!");
write.then(() => console.log("File written to ./hello.txt"));
/**
* Output: File written to ./hello.txt
*/
通过组合Deno.writeTextFile
和JSON.stringify
,可以轻松地将序列化的JSON对象写入文件。本例使用同步的Deno.writeTextFileSync
,也可以使用await Deno.writeTextFile
异步完成。
要执行代码,‘deno run`命令需要WRITE标志。
Command: deno run --allow-write write.ts
/**
* write.ts
*/
function writeJson(path: string, data: object): string {
try {
Deno.writeTextFileSync(path, JSON.stringify(data));
return "Written to " + path;
} catch (e) {
return e.message;
}
}
console.log(writeJson("./data.json", { hello: "World" }));
/**
* Output: Written to ./data.json
*/