P06:node內置模塊 fs(1)

相關文章

fs 文件系統

簡單介紹

fs模塊是node.js的內置模塊node

fs 模塊提供了一個 API,用於以模仿標準 POSIX 函數的方式與文件系統進行交互web

須要注意一點 若是操做成功完成,則第一個參數將爲 null 或 undefined。api

讀文件

```
const fs = require('fs')
// 須要注意一點 若是操做成功完成,則第一個參數將爲 null 或 undefined。
fs.readFile('./06_fs.js', (err, data) => {
    //  若是出現錯誤 經過throw輸出
    if (err) throw err
    console.log(data) 
})
// 打印 二進制 一個buf
/**
 * PS E:\xxx\ccc\aaa\api> node 06_fs.js
    <Buffer 2f 2f 20 e6 89 80 e6 9c 89 e6 96 87
    e4 bb b6 e7 b3 bb e7 bb 9f e6 93 8d e4 bd 9c
    e9 83 bd e5 85 b7 e6 9c 89 e5 90 8c e6 ad a5
    e5 92 8c e5 bc 82 e6 ad ... >
 */
```
複製代碼

寫文件

```
//  寫一個文件

const fs = require('fs')

fs.writeFile('./test.js', 'test test', {
    encoding: 'utf8'
}, (err) => {
    if (err) throw err
    console.log('done!')
})

//  打印 
// 在本文件價下增長一個test.js文件 內容爲 test test
// done! 
```
複製代碼

輸出爲特定格式 例如字符串

  • toString()
    const fs = require('fs')
    // 須要注意一點 若是操做成功完成,則第一個參數將爲 null 或 undefined。
    fs.readFile('./07_fs_throw_string.js', (err, data) => {
        //  若是出現錯誤 經過throw輸出
        if (err) throw err
        console.log(data)
        // 輸出字符串
        console.log(data.toString()) 
    })
    <!--打印 -->
    /**
     *  PS E:\xxx\xxx\xxx\api> node 07_fs_throw_string.js
        <Buffer 2f 2f 20 20 e8 be 93 e5 87 ba 20 e5 
        ad 97 e7 ac a6 e4 b8 b2 0d 0a 63 6f 6e 73 74 
        20 66 73 20 3d 20 72 65 71 75 69 72 65 28 27
        66 73 27 29 0d 0a 2f 2f ... >
        //  輸出 字符串
        const fs = require('fs')
        // 須要注意一點 若是操做成功完成,則第一個參數將爲 null 或 undefined。
        fs.readFile('./07_fs_throw_string.js', (err, data) => {
            //  若是出現錯誤 經過throw輸出
            if (err) throw err
            console.log(data)
            // 輸出字符串
            console.log(data.toString())
        })
     */
    複製代碼
  • 傳入參數~ 推薦
    const fs = require('fs')
    // 須要注意一點 若是操做成功完成,則第一個參數將爲 null 或 undefined。
    fs.readFile('./08_fs_throw_string.js', 'utf8', (err, data) => {
        //  若是出現錯誤 經過throw輸出
        if (err) throw err
        console.log(data)
    })
    
    // 輸出
    // const fs = require('fs')
    // // 須要注意一點 若是操做成功完成,則第一個參數將爲 null 或 undefined。
    // fs.readFile('./08_fs_throw_string.js', 'utf8', (err, data) => {
    //     //  若是出現錯誤 經過throw輸出
    //     if (err) throw err
    //     console.log(data)
    // })
    複製代碼

異步同步

二者都須要讀取完文件(或者部分讀取)才能返回文件,都是須要等待的,那麼二者的區別什麼呢 ?bash

  • 對於單獨用戶使用服務器來講是沒有區別的,或者說區別不明顯。
  • 可是web實際場景中是大量的用戶在使用,同步會致使前面的用戶處理阻擋後面的用戶處理。
  • 異步則會直接在讓其單獨等待,繼續處理其餘,實現了高併發。
  • 另外全部的api 都有同步的版本,詳見node
  • 舉個例子
    // 異步
    const fs = require('fs')
    // 須要注意一點 若是操做成功完成,則第一個參數將爲 null 或 undefined。
    fs.readFile('./08_fs_throw_string.js', 'utf8', (err, data) => {
        //  若是出現錯誤 經過throw輸出
        if (err) throw err
        console.log(111111111)
    })
    
    //  同步
    const data = fs.readFileSync('./09_fs_sync.js', 'utf8')
    
    console.log(data)
    
    // 打印
    /**
     * // 異步
        const fs = require('fs')
        // 須要注意一點 若是操做成功完成,則第一個參數將爲 null 或 undefined。
        fs.readFile('./08_fs_throw_string.js', 'utf8', (err, data) => {
            //  若是出現錯誤 經過throw輸出
            if (err) throw err
            console.log(111111111)
        })
    
        //  同步
        const data = fs.readFileSync('./09_fs_sync.js', 'utf8')
    
        console.log(data)
        111111111
     * 
     */
    複製代碼

    能夠看到同步的方法即便寫在後面也會先執行,由於異步的方法是交給i/o去執行的服務器

close併發

相關文章
相關標籤/搜索