Deno文件處理詳解:如何寫入文件、如何讀文件、如何創建刪除以及檢查文件和目錄。


原文地址:Deno文件處理詳解:如何寫入文件、如何讀文件、如何創建刪除以及檢查文...

Deno帶有自己的文件系統作為核心模塊。該文件系統模塊可用於任何類型的文件或目錄操作。在本教程分享了在Deno應用程序中文件處理的方法示例:如何寫入文件、如何讀文件、如何創建刪除以及檢查文件和目錄。

目前,一些方法仍處於試驗階段,並且非常不穩定。使用這些方法時,應始終添加標志。--unstable

我們將向您介紹以下內容:

  • 如何在Deno中寫入文件
  • 如何在Deno中讀取文件
  • 刪除Deno(removeremoveSync)中的文件
  • 檢查目錄中的文件夾(ensureDir)
  • 復制文件內容(copy)
  • 檢查目錄(exists)
  • 檢查文件是否存在(ensureFile)
  • 如何在Deno(emptyDir)中清空目錄
  • 在Deno中創建CLI應用程序

如何在Deno中寫入文件

有幾種方法可以在Deno中寫入文件。它們都需要標志,並且如果發生則將引發錯誤。--allow-write

您可以使用或將文本寫入文件。具有同步和異步格式,並帶有兩個參數:文件的位置和下面要寫入文件的內容。Deno.writeTextFileDeno.writeFileDeno.writeTextFile

// using the async method
await Deno.writeTextFile('./file.txt', 'This is the content to be written');

//using sync method
Deno.writeTextFileSync('./file.txt', 'This is the content to be written');

你也可以使用帶有TextEncoder的Deno.writeFile方法,TextEncoder方法可以轉換字符串為Unit8Array:

const encoder = new TextEncoder(); // to convert a string to Uint8Array
await Deno.writeFile("./file.txt", encoder.encode("Content to be written"));

最后,你可以說好用Deno.open和Deno.writeAll方法打開一個文件,寫入內容,然后關閉文件。

const file = await Deno.open("./image.png", { write: true, create: true }); //this opens the file
await Deno.writeAll(file, imageBytes); //writes to file
file.close(); // closes the file

 

如果你想寫入內容到一個不存在文件,Deno會自動創建這個文件。

Deno如何讀文件

像寫文件一樣,Deno有多種讀文件方法,並且這些每一個方法都需要--allow-read參數。

你可以使用Deno.readTextFile和Deno.readFile方法去讀一個文件。Deno.readTextFile提供同步和異步方法,並且將路徑做為參數:

// using the async method
const text = await Deno.readTextFile("file.txt");
console.log(text);

//using the sync method
const sync = Deno.readTextFileSync("file.txt");
console.log(sync);

另一個方法是Deno.readFile。你必須首先使用TextDecoder方法將文件解碼到一個可讀的格式。

const decoder = new TextDecoder("utf-8");
const text = decoder.decode(await Deno.readFile("file.txt"));

console.log(text);

在Deno中移除或者說刪除文件(remove and removeSync)

想要在Deno刪除文件,使用remove和removeSync方法。

// Deno remove file asynchronous (non-block)
await Deno.remove("file.txt");

// Deno remove file synchronous (blocking way)
Deno.removeSync("image.png");

如果嘗試刪除不存在的文件,則Deno會引發錯誤。

Uncaught NotFound: No such file or directory (os error 2)

檢查目錄中的文件夾(ensureDir)

ensureDir方法可確保您的工作目錄中存在一個文件夾。您可以使用它來編寫一個簡單的程序。

讓我們編寫一個簡單的程序來檢查文件夾是否存在。如果該文件夾存在,它將創建一個新文件並向其中添加一些文本內容。

要使用此方法,必須將其導入到應用程序中。notes在工作目錄中創建一個文件夾。這是您存儲筆記的地方。

import { ensureDir, ensureDirSync } from "https://deno.land/std/fs/mod.ts";

與到目前為止我們討論過的其他方法一樣,該方法有異步和同步格式。這是使用異步方法的方法:

ensureDir("./notes")
 .then(() => Deno.writeTextFile("./notes/note1.txt", "This is the content for note 1")); 

復制文件內容(copy)

copy方法使您可以將文件內容復制到另一個文件。

要將copy方法導入到Deno應用程序中:

import { copy } from "https://deno.land/std/fs/mod.ts";
copy("file.txt", "test.txt", {
 overwrite: true,
});

此方法將文件內容從復制到。它還需要一些選擇。例如,該選項將覆蓋您要將內容復制到的文件的內容。file.txttest.txtoverwrite

 

檢查目錄(exists)

 

exists方法檢查目錄是否存在。exists返回一個Promise而existsSync返回一個布爾值。

 

讓我們編寫一個簡單的程序,該程序將檢查目錄是否存在:

import { exists, existsSync } from "https://deno.land/std/fs/mod.ts";

exists("./notes").then((res) => console.log(res)); //res here returns a boolean
 //or do this
let fileExists = existsSync("./notes"); 
console.log(fileExists);// returns boolean

檢查文件是否存在(ensureFile)

ensureFile 確保文件存在。

讓我們編寫一個簡單的程序進行試驗:

import { ensureFile, ensureFileSync } from "https://deno.land/std/fs/mod.ts";
let ok = ensureFileSync("./read.ts");

如果該文件不存在,Deno會自動創建它。同樣,請記住添加——不穩定標志,因為其中一些方法仍處於試驗階段。

如何在Deno(emptyDir)中清空目錄

emptyDir方法檢查目錄是否為空。如果指定的目錄包含任何文件或目錄,則Deno清空該目錄。

import { emptyDir } from "https://deno.land/std/fs/mod.ts";

emptyDir("./notes").then((res) => console.log("res", res)); // this method return a promise.

使用Deno創建一個CLI應用

現在讓我們創建一個簡單的CLI應用程序,它將為我們創建文件。我們將使用終端來創建這個文件。

Deno.args返回在命令中傳遞的所有參數。這樣,我們就可以創建一個簡單的應用程序。我們的命令將保存我們想要創建的文件的名稱。

運行以下:

deno run main.ts create-file test.ts.

這個命令有兩個參數:create-file和test.ts。如果我們記錄Deno.args,它將返回一個數組中的參數。

我們可以使用它來檢查用戶是否傳遞了創建文件參數並為文件提供了一個名稱:

let params = Deno.args;
console.log(params);
let createFile = () => {
 if (params[0] !== "create-file") {
 console.log(
 `${params[0]} is not a valid command, Did you mean 'create-file'`,
 );
 return false;
 } else if (!params[1]) {
 console.log(
 `You need to provide a name of a file`,
 );
 return false;
 } else {
 Deno.writeTextFileSync(`./${params[1]}`, "//This is your created file");
 }
};
createFile();

現在運行應用程序,打開你的終端,運行以下程序:

deno run --allow-all main.ts create-file <name of file>

記住添加 --allow-all 或者 --allow-write 文件參數

總結

如Deno的文件系統非常通用,將文件寫入Deno時需要考慮多種方法和方案。知道如何使用同步和異步方法總是有好處的,因為它們都有用例。寫入較大的文件時,應考慮使用分片寫入功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM