nodejs複習03

文件系統fs

重命名

fs.rename()
fs.renameSync
  • 優先選擇異步,能夠進行異常判斷

打開關閉文件

fd = fs.openSync(file, flags)
fs.closeSync(fd)

//
fs.open(file, flags, function (fd) {
    fs.close(fd, function(err) {
    })
})
  • 當打開或新建文件時,內核向進程返回一個文件描述符fd`
  • flags表示打開模式: 'r'以讀取模式打開,'w' 以讀取模式打開,不存在則建立,'a' 以追加模式打開,不存在則建立

截取文件內容

  • 僅剩字符串長度len的內容,默認爲0即所有截取
var fd = fs.openSync(file, frag)
fs.ftruncateSync(fd, len)
fs.closeSync(fd);

//
var fd = fs.openSync(file, frag)
fs.ftruncate(fd, len, function (err) {
    fs.closeSync(fd);
})

修改文件長度

fs.truncateSync(file, len)

//
fs.truncate(file, len, function (err) {

})
  • 此方法與fs.ftruncate相似,但能夠直接經過路徑修改文件

獲取文件信息

  • stat\statSync
var fs = require('fs')
fs.stat(path, function (err, stats) {
    console.log('是否爲文件:', stats.isFile());
    console.log('是否爲目錄:', stats.isDirectory());
    console.log('讀寫權限是:', stats.mode);
    console.log('文件大小是:', stats.size);
    console.log('訪問時間是:', stats.atime);
    console.log('修改時間是:', stats.mtime);
    console.log('建立時間是:', stats.ctime);
    console.log('全部權用戶ID :', stats.uid);
    console.log('全部權羣組ID:', stats.gid);
})
  • fstat\fstatSync

更改文件全部權

  • fs.chown(path, uid, gid, callback)/chownSync
  • fs.fchown(fd, uid, gid, callback)/fchowmSync
  • 更改文件全部權的操做須要用戶有必定權限

更改文件權限

  • fs.chmod(path, mod, callback)/chmodSync
  • fs.fchmods(fd, mod, callback)/fchmodSync
  • 直接修改權限: chmod mod path; 查看相應文件權限: ls -lh path
Linux/Unix 的檔案存取權限分爲三級 : 檔案擁有者、羣組、其餘

r 表示可讀取,w 表示可寫入,x 表示可執行
r=4,w=2,x=1 
若要rwx屬性則4+2+1=7; 
若要rw-屬性則4+2=6; 
若要r-x屬性則4+1=7

chmod ug=rwx,o=x path等同chmod 771 path

600 (只有全部者有讀和寫的權限)

644 (全部者有讀和寫的權限,組用戶只有讀的權限)

700 (只有全部者有讀和寫以及執行的權限)

666 (每一個人都有讀和寫的權限)

777(每一個人都有讀和寫以及執行的權限)

文件硬連接

  • 建立文件新的副本而不是符號連接,它引用的是文件的物理數據而不是文件結構位置
  • 只能引用同一系統的文件
  • 修改其中一個文件會互相影響,即便原文件重命名
  • 刪除移動原文件不會影響副本
fs.link(srcpath, dstpath, callback)/ fs.linkSync
fs.unlink(scrpath, dstpath, callback)/fs.unlinkSync

文件符號連接

  • 軟連接,一類特殊文件,包含另外一個文件的路徑名,僅僅是個快捷方式
  • 能夠連接不一樣系統的文件
  • 修改其中一個文件會互相影響
  • 刪除移動重命名原文件都會影響軟連接
//建立
fs.symlink(srcpath, dstpath, callback)/ fs.symlinkSync

//讀取,不是有效文件符號連接會出錯
fs.readlink(dstpath, callback)/ fs.readlinkSync

相對路徑轉絕對路徑

  • fs.realpath(path, [opetion], callback)/realpathSync

文件夾

  • 建立: mkdir/mkdirSync
  • 刪除: rmdir/rmdirSync
  • 讀取: readdir/readdirSync 返回文件目錄數組數組

    文件

  • 判斷文件或文件夾是否存在: fs.exists(path, function (result) {})/fs.existsSync
  • 讀取文件內容app

//readFile/readFileSync
fs.readFile(path, callback)/fs.readFileSync

//read/readSync
fs.open('1.txt', 'r', function (err, fd) {
    fs.fstat(fd, function (err, stat) {
        var buf = new Buffer(stat.size), bytesRead = 0;
        var length = fs.read(fd, buf, bytesRead, buf.length, null, function (err, bytesRead, buffer) {
            console.log(err, bytesRead, buffer.toString());
            fs.close(fd);
        });
    })
})
  • 寫文件
//writeFile/writeFileSync
fs.writeFileSync(path, data);


//write/writeSync
fs.open('1.txt', 'w', function (err, fd) {
    var buf = new Buffer('aaa');
    fs.write(fd, buf, 0, buf.length, null, function (err, bytesRead, buffer) {
        console.log(bytesRead, buffer.toString());
        fs.close(fd);
    })
})
  • 追加寫文件: fs.appendFile/fs.appendFileSync異步

  • 監控文件: 注意這兩個方法針對不一樣的系統平臺使用起來不是很穩定ui

fs.watchFile('1.txt', function (curr, prev) {
    console.log(curr, prev);
})

fs.watch('1.txt', function (event, filename) {
    console.log(event);
    console.log(filename);
})

路徑處理

字符串路徑

  • 規範字符串路徑: path.normalize 過濾多餘/,處理./,../
  • 合併字符串路徑: path.join 包括規範字符串路徑處理
  • 解析絕對路徑: path.resolve: 包括規範和合並字符串路徑
  • 解析相對路徑: path.relative: 包括規範和合並字符串路徑

獲取文件夾路徑

//根據已經獲得的文件名稱,得到該文件所在文件夾絕對路徑
path.dirname(path.resolve('1.txt'))

獲取文件擴展名:

  • path.extname 格式.xxx

獲取路徑中最後部分

path.basename('a/b/test.txt');  //c
path.basename('a/b/test.txt', 't.txt'); //tex

url路徑解析和格式化

url.parse
url.format

url路徑轉化

  • 原有url路徑上增長或替換標籤
  • 若是原urlhref類型,則會插入或替換以最後一個/爲基礎
  • 若是原url/開頭,則插入或替換標籤以/開頭會徹底替換
console.log(url.resolve('/a/b', 'c'));  //  /a/c
console.log(url.resolve('/a/b', '/c'));  //  /c
console.log(url.resolve('/a/b/', 'c'));  //  /a/b/c
console.log(url.resolve('/a/b/', '/c'));  //  /c
console.log(url.resolve('http://xxx.com/a', 'c'));  //  http://xxx.com/c
console.log(url.resolve('http://xxx.com/a', '/c'));  //  http://xxx.com/c
console.log(url.resolve('http://xxx.com/a/', 'c'));  //  http://xxx.com/a/c
console.log(url.resolve('http://xxx.com/a/', '/c'));  //  http://xxx.com/c

轉化url的query參數

var querystring = require('querystring')

querystring.parse(url)
相關文章
相關標籤/搜索