<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] >[success] # 文件的讀寫 -- fs模塊 ~~~ 1.整個操作是有異步操作方法和同步操作方式是對應出現的,但官方建議使用異 步,同步會出現阻塞體現不出來node的優勢,異步是無法確認準確的返回時間, 因此,操作最好放在回調中進行。 1.stat -- 查看文件狀態 2.readFile -- 文件的讀取 3.writeFile -- 文件的寫入 4.文件流讀取 -- createReadStream 5.文件流寫入 -- createWriteStream ~~~ >[danger] ##### fs.stat(path, callback) -- 查看文件狀態 ~~~ 1.可以進行查看文件的詳細信息,判斷當前是文件還是目錄等 2.回調函數中有兩個參數一個是,異常的報錯,一個是正確的返回對象 3.不建議在調用`fs.open()`、`fs.readFile()`或`fs.writeFile()`之前使用`fs.stat()`檢查 文件是否存在。 而是,應該直接打開、讀取或寫入文件,并在文件不可用時處理 引發的錯誤。 4.返回的對象鍵值依次解釋 { dev: 包含該文件的設備的數字標識符, mode: 描述文件類型和模式的位字段, nlink:文件存在的硬鏈接數。 uid: 擁有該文件的用戶的數字用戶標識符(POSIX), gid: 擁有該文件的組的數字組標識符(POSIX), rdev: 如果文件被視為特殊文件,則該值為數字設備標識符。, blksize: 用于 I/O 操作的文件系統塊大小, ino: 5348024557505149, size: 文件的大小(以字節為單位), blocks: 為此文件分配的塊數, atime: 表示上次訪問此文件的時間戳, mtime: 表示上次修改此文件的時間戳, ctime: 表示上次更改文件狀態的時間戳, birthtime: 表示此文件創建時間的時間戳} ~~~ * 異步使用案例 ~~~ let fs = require('fs') fs.stat('data.txt',function (err, stats) { if (err) throw err; if(stats.isFile()){ console.log('文件'); }else if(stats.isDirectory()){ console.log('目錄'); } console.log(stats) }) 打印結果: 文件 { dev: 742412320, mode: 33206, nlink: 1, uid: 0, gid: 0, rdev: 0, blksize: undefined, ino: 5348024557505149, size: 13, blocks: undefined, atime: 2019-01-06T11:16:18.474Z, mtime: 2017-05-27T15:17:56.327Z, ctime: 2019-01-06T11:16:18.475Z, birthtime: 2019-01-06T11:16:18.474Z } ~~~ * 同步方法不建議使用 ~~~ let fs = require('fs') let ret = fs.statSync('./data.txt'); console.log(ret); 打印結果: { dev: 742412320, mode: 33206, nlink: 1, uid: 0, gid: 0, rdev: 0, blksize: undefined, ino: 5348024557505149, size: 13, blocks: undefined, atime: 2019-01-06T11:16:18.474Z, mtime: 2017-05-27T15:17:56.327Z, ctime: 2019-01-06T11:16:18.475Z, birthtime: 2019-01-06T11:16:18.474Z } ~~~ >[danger] ##### fs.readFile(path[, options], callback) -- 文件的讀取 ~~~ 1.第一個參數path 路徑,options 編碼格式,callback 回調函數 2.如果有第二個參數并且是編碼,那么回調函數獲取到的數據就是字符串 ,如果沒有第二個參數,那么得到的就是Buffer實例對象 ~~~ * 異步讀取 ~~~ let fs = require('fs'); let strpath = path.join(__dirname,'data.txt'); // 相對路徑 // 沒有進行轉碼使用toString() 進行轉碼 fs.readFile(strpath,(err,data)=>{ if(err) return; console.log(data.toString()); }); let fs = require('fs'); // 使用utf8轉碼 fs.readFile(strpath,'utf8',(err,data)=>{ if(err) return; console.log(data); }); ~~~ * 同步(不建議使用) ~~~ // 同步操作 let ret = fs.readFileSync(strpath,'utf8'); console.log(ret); ~~~ >[danger] ##### fs.writeFile(file, data\[, options\], callback) -- 文件的寫入 ~~~ 1.第一個參數:文件路徑 2.第二個參數:文件內容 3.第三個參數:回調函數 其中回調函數中的error 當文件寫入成功:error 是 null,當文件寫入失敗,error 就是錯誤對象信息 4.會覆蓋原文件內容 ~~~ * 異步方法 ~~~ let fs = require('fs') let path = require('path') let strpath = path.join(__dirname,'data.txt'); var data = "我是寫入的內容" fs.writeFile(strpath, data,'utf8',(err)=>{ if(!err){ console.log("寫入成功") } }) ~~~ * 同步(不建議使用) ~~~ fs.writeFileSync(strpath,'tom and jerry'); ~~~ >[danger] ##### 文件流讀取 -- createReadStream ~~~ 1.文件流,如果大文件的拷貝的話,內存就受不了而且沒有進度的概念,比如說, 你拷貝一個很大的文件,一直在拷貝,你不知道已經拷貝到哪了,已經等不及 了,就把它給停掉了,這樣就造成之前的拷貝白白浪費了。因此采取文件流的方 式復制,就是針對大文件操作的。 2.類似瀏覽器的點擊事件,基于事件的處理方式 //讀取文件發生錯誤事件 readStream.on('error', (err) => { console.log('發生異常:', err); }); //已打開要讀取的文件事件 readStream.on('open', (fd) => { console.log('文件已打開:', fd); }); //文件已經就位,可用于讀取事件 readStream.on('ready', () => { console.log('文件已準備好..'); }); //文件讀取中事件····· readStream.on('data', (chunk) => { console.log('讀取文件數據:', chunk); }); //文件讀取完成事件 readStream.on('end', () => { console.log('讀取已完成..'); }); //文件已關閉事件 readStream.on('close', () => { console.log('文件已關閉!'); } ~~~ * 使用讀取文件 ~~~ let fs = require('fs') let path = require('path') let strpath = path.join(__dirname,'data.txt'); let readStream = fs.createReadStream(strpath); // 讀取的地址 readStream.on('data',(chunk)=>{ // 二進制需要轉碼 console.log(chunk.toString()) }) ~~~ >[danger] ##### 文件流寫入 -- createWriteStream ~~~ 1.用文件流寫入 //讀取文件發生錯誤事件 writeStream.on('error', (err) => { console.log('發生異常:', err); }); //已打開要寫入的文件事件 writeStream.on('open', (fd) => { console.log('文件已打開:', fd); }); //文件已經就寫入完成事件 writeStream.on('finish', () => { console.log('寫入已完成..'); console.log('讀取文件內容:', fs.readFileSync('./test/b.js', 'utf8')); //打印寫入的內容,使用同步去讀取寫入的內容。 console.log(writeStream); }); //文件關閉事件 writeStream.on('close', () => { console.log('文件已關閉!'); }); writeStream.write('這是我要做的測試內容'); writeStream.end(); ~~~ * 案例(將已存在文件內容寫入其他指定文件中,可以在read 的on事件,邊讀變寫入這是一個小技巧) ~~~ let fs = require('fs') let path = require('path') let strpath = path.join(__dirname,'data.txt'); let writeStream = fs.createWriteStream(strpath); writeStream.write("你好呀"); ~~~ * 讀完寫出到指定文件 ~~~ fs.createReadStream(spath).pipe(fs.createWriteStream(dpath)); ~~~ >[danger] ##### sql語句生成的小案例 * data ~~~ [ { "id": "1", "name": "三國演義", "author": "羅貫中", "category": "文學", "desc": "一個殺伐紛爭的年代" }, { "id": "2", "name": "水滸傳", "author": "施耐庵", "category": "文學", "desc": "108條好漢的故事" }, { "id": "3", "name": "西游記", "author": "吳承恩", "category": "文學", "desc": "佛教與道教的斗爭" }, { "id": "4", "name": "紅樓夢", "author": "曹雪芹", "category": "文學", "desc": "一個封建王朝的縮影" }, { "name": "天龍八部", "author": "金庸", "category": "文學", "desc": "武俠小說", "id": 5 } ] ~~~ ~~~ const path = require('path'); const fs = require('fs'); fs.readFile(path.join(__dirname,'../','data.json'),(err, result)=>{ if(err) throw err ; let list =JSON.parse(result.toString()); let arr = []; list.forEach((item,index)=>{ let sql = `insert into book (name,author,category,description) values ('${item.name}','${item.author}','${item.category}','${item.desc}');`; arr.push(sql) }); fs.writeFile(path.join(__dirname,'datas.sql'),arr.join(''),'utf8',(err)=>{ if(!err){ console.log("1") } }); }); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看