Deno ファイルに書き込みを行う

Denoで、ファイルに書き込みを行うサンプルコードを記述してます。Denoはnode.jsの反省点をふまえた新しいJavaScriptランタイムです。
環境
- OS windows10 64bit
- Deno 1.6.1
- typescript 4.1.2
ファイル書き込み
Deno FileSystemを使用することで、ファイルに書き込みを行うことが可能です。
サンプルコード(sample.ts)
//テキストエンコードを作成
const encoder = new TextEncoder();
// 書き込むファイルを指定
const data = encoder.encode("hoge\nhoge");
// 上書きで書き込み なければ作成
await Deno.writeFile("./hoge1.txt", data);
// パーミッションを設定
await Deno.writeFile("./hoge2.txt", data, {mode: 0o777});
// 追加書き込み
await Deno.writeFile("./hoge3.txt", data, {append: true});
// ファイルが存在しなければ実行しない
await Deno.writeFile("./hoge4.txt", data, {create: false});
実行すると、ファイルに書き込みが行われていることが確認できます。
deno run --allow-write sample.ts
<出力結果>
error: Uncaught (in promise) PermissionDenied: read access to "./hoge4.txt", run again with the --allow-read flag
at processResponse (deno:core/core.js:223:11)
at Object.jsonOpAsync (deno:core/core.js:240:12)
at async stat (deno:runtime/rt/30_fs.js:224:17)
at async Object.writeFile (deno:runtime/rt/40_write_file.js:47:9)
hoge1.txt

hoge2.txt

hoge3.txt(2回実行) 追加書き込みされていることが確認できます。

hoge4.txtは存在しないので、エラーとなります。
また、許可の要求なしにファイルへの書き込みを実行すると、Denoはデフォルトでファイルへのアクセスが制限されているので「PermissionDenied」が発生します。
deno run sample.ts
<出力結果>
error: Uncaught (in promise) PermissionDenied: write access to "./hoge1.txt", run again with the --allow-write flag
at processResponse (deno:core/core.js:223:11)
at Object.jsonOpAsync (deno:core/core.js:240:12)
at async open (deno:runtime/rt/30_files.js:44:17)
at async Object.writeFile (deno:runtime/rt/40_write_file.js:54:18)
-
前の記事
docker composeを使ってonlyofficeが使用できるnextcloudを構築する 2021.05.25
-
次の記事
Ubuntu20.10 「^Citing for cache lock: Could not get lock /var/lib/dpkg/lock-frontend」発生時の対処法 2021.05.26
コメントを書く