node.js学習2

基本単位

  • 組み込みモジュールをインストールする必要はありません。外部モジュールをインストールする必要があります。
    ここに画像の説明を挿入
    このファイルはカスタムモジュールです。

ここに画像の説明を挿入
require( "./ home"); //カスタムモジュールの同じレベルのディレクトリを追加する必要があります。/

次のファイルのファイル名組み込みモジュール

ここに画像の説明を挿入

require( "tt"); // node_modulesに格納し、組み込みモジュールのルールに従って実行します。

npmパッケージマネージャー(別名:モジュールマネージャー)

npmの一般的なコマンド:

  • npm init:package.jsonファイルを作成するためのガイド
  • npm rootを使用して現在のパッケージインストールのパスを表示するか、npm root-gを使用してグローバルインストールパスを表示します。
  • npm-vバージョンを表示
  • node -v node版本
  • npm i jquery --save
  • npm icookieクライアント
  • npm i axios --save-dev
    npm i axios--save-devこれは開発の依存関係です

package.jsonの
"dependencies":{//依存関係を実行
"jquery": "^ 3.6.0" // npm i jquery --save
}、
"devDependencies":{}、//開発の依存関係

npm install module_name-Sまたは--save
はnpminstall module_name--saveが依存関係を書き込むことを意味しますnpminstall module_name-Dまたは--save-devはnpminstall module_name--save-devがdevDependenciesを書き込むことを意味します

fsモジュール

  • fsはファイル操作モジュールです。すべてのファイル操作は同期と非同期に分けられます。機能は、同期によって次のような「同期」が追加されることです。非同期読み取りファイル「readFile」、同期読み取りファイル「readFileSync」。

fsモジュールの予備的な理解

//fs:操作文件的模块  内置模块
const fs = require("fs");

>  增删改查
1.  文件操作  2.  目录操作

1.ファイル操作

  • ファイルを書き込む

writeFile():書き込みファイル
パラメーター1:ファイル名(ファイル形式を含む)
パラメーター2:ファイル、書き込むコンテンツ

fs.writeFile("1.txt", "我是需要写入的文件", function(err) {
    
    
    if (err) {
    
    
        return console.log(err); //输出报错信息
    }
    console.log("写入成功");
});

書き込まれたファイルが存在する場合、元のファイルの内容は上書きされ、
{flag: "a"}
パラメーター{flag: "a"}パラメーター3になります。構成オブジェクト{}:フラグ属性:aが書き込みに追加されます
w:書き込み(デフォルト値)
r:読み取り

fs.writeFile("1.txt", "我是追加进来的内容", {
    
     flag: "w" }, function(err) {
    
    
    if (err) {
    
    
        return console.log(err); //输出报错信息
    }
    console.log("写入成功");
});

ファイル読み取りfs.readFile

冷门方式
fs.readFile("1.txt",(err,data)=>{
    
    
    if(err){
    
    
        return console.log(err);
    }
    console.log(data.toString());
})



fs.readFile():
回调函数中  参数1:错误的信息
"utf-8"
fs.readFile("1.txt", "utf-8", (err, data) => {
    
    
    if (err) {
    
    
        return console.log(err);
    }
    console.log(data);
})
所有的文件操作,默认都有同步和异步;
默认是同步的,需要异步的话,在方法名前加Sync
例如:readFileSync();
 fs.readFileSync("1.txt", "utf-8");
 console.log(data);

// let data = fs.readFileSync("1.xtx").toString();
// console.log(data);

/ファイル名の変更:名前の変更
//パラメータ1:元のファイル名
//パラメータ2:新しいファイル名

 fs.rename("1.txt", "11.txt", err => {
    
    
     if (err) {
    
    
         return console.log(err);
     }
     console.log("修改成功");
 });

ファイルの削除– fs.unlink( "")

fs.unlink("2.txt", err => {
    
    
    if (err) {
    
    
        return console.log(err);
    }
    console.log("删除成功");
})

ファイルをコピーする

fs.copyFile();
1.本质是先读取,再写入
fs.copyFile("11.txt", "aa.txt", err => {
    
    
    if (err) {
    
    
        return console.log(err);
    }
    console.log("复制成功");
})

2.封装复制
function myCopyFile(src, dest) {
    
    
    fs.writeFileSync(dest, fs.readFileSync(src));
}
myCopyFile("11.txt", "4.txt");

2:ディレクトリ操作

ディレクトリを操作するときにサフィックス形式は必要ありません

创建目录
fs.mkdir("ding", err => {
    
    
    if (err) {
    
    
        return console.log(err);
    }
    console.log("创建成功");
})
修改目录名称
fs.rename("ding", "da", err => {
    
    
    if (err) {
    
    
        return console.log(err);
    }
    console.log("修改成功");
})
读取目录
fs.readdir("da", (err, data) => {
    
    
    if (err) {
    
    
        return console.log(err);
    }
    console.log(data);//读出来的是一个数组
})
删除目录(空目录/空文件夹)
fs.rmdir("da", err => {
    
    
    if (err) {
    
    
        return console.log(err);
    }
    console.log("删除成功");
})


判断文件或目录是否存在
fs.exists("5.txt", function(exists) {
    
    
    console.log(exists); //是否找到指定内容  找到就是true找不到就是false
})
//获取文件或目录的详细信息
fs.stat("http.html", (err, data) => {
    
    
    if (err) {
    
    
        return console.log(err);
    }
    console.log(data);


////ファイルですか// let res = data.isFile();
// console.log(res); ////
ディレクトリ
ですか//data.isDirectory();
})

空でないディレクトリを削除する

アイデア:1。最初にディレクトリ内のファイルを削除します
。2 ディレクトリが空であることがわかったら、ディレクトリを直接削除します。

function removerDir(path) {
    
    
    //获取目录
    let data = fs.readdirSync(path);
    //["a",2.html","3.txt","4.txt"]
    // console.log(data)

    //总体思路
    for (let i = 0; i < data.length; i++) {
    
    
        //循环判断目录中的每一个内容

        //处理子目录的路径
        let url = path + "/" + data[i];
        /*
         循环1: url =  "22/a"
         循环2:下来就是a文件  然后时a文件下面的所有内容

         */
        //获取详细信息
        let stat = fs.statSync(url);
        console.log(stat.isDirectory());
        if (stat.isDirectory()) {
    
     //如果是目录  继续查找
            removerDir(url);
        } else {
    
     //文件,删除
            fs.unlinkSync(url); //   path  =  22

        }
    }
    //当循环结束后,目录成为空目录
    fs.rmdirSync(path);
}
//注意事项:在使用node.js删除文件时,不会经过回收站
//          在删除前,  切记备份
//          一面删除错误,发生不可挽救的损失
removerDir("22");

これらの2つの場所に特に注意してください
ここに画像の説明を挿入

バッファバッファデータのバッファもクラスであり、モジュールではありません
  • 今の作成方法
  • パラメータ:コンテンツのサイズ(バイト単位)

バッファ= Buffer.alloc(10); console.log(バッファ);

  • バッファはデータをバイナリに変換し、16進形式で表示します

let buffer = Buffer.from(“大家好”); console.log(バッファ);

let buffer1 = Buffer.from([0xe5, 0xa4, 0xa7, 0xe5, 0xae, 0xb6, 0xe5, 0xa5, 0xbd]);
这里要注意的是上面的参数要以这种0xe5,  才会转换为字符串
console.log(buffer1); <Buffer e5 a4 a7 e5 ae b6 e5 a5 bd>
console.log(buffer1.toString())大家好
let buffer2 = Buffer.from("大家好");
console.log(buffer2)
/字符串创建
//StringDecoder:   固定名称
let {
    
     StringDecoder } = require("string_decoder");

let decoder = new StringDecoder();

let res1 = decoder.write(buffer1);
let res2 = decoder.write(buffer2);
console.log(res1 + res2);

ストリーム

  • ストリーム:ストリームとデータ処理は切り離せません
//stream   流

const fs = require("fs");
//读取了数据
let rs = fs.createReadStream("11.txt");

//将数据写入
let ws = fs.createReadStream("aa.txt");
//管道
rs.pipe(ws);

console.log(rs);

//流 ,会把数据分成64kb的小文件传输
let num = 0;
let str = "";

//数据传输时,触发的方法
rs.on("data", chunk => {
    
    
        console.log(chunk);
        num++;
        str += chunk;
        console.log(chunk);
        console.log(num)

    })
    //数据传递完成后
rs.on("end", () => {
    
    
    console.log(str)
})

おすすめ

転載: blog.csdn.net/weixin_54645137/article/details/115110938