• 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类似,但可以直接通过路径修改文件

    获取文件信息

    • statstatSync
    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);
    })
    
    • fstatfstatSync

    更改文件所有权

    • 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
    • 读取文件内容
    //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

    • 监控文件: 注意这两个方法针对不同的系统平台使用起来不是很稳定

    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)
    
  • 相关阅读:
    开车旅行(codevs 1199)
    云serverlinux又一次挂载指定文件夹(非扩充)
    百度之星资格赛 hdu 4826 Labyrinth 动态规划
    Linux下基于源代码方式安装MySQL 5.6
    ACM-最短路之中的一个个人的旅行——hdu2066
    新辰:共享是SEO的思维 用户是SEO的核心
    servlet中生成验证码
    Linux ls 排序
    我想要得那块牌—记烟台大学第一届"ACM讲堂"
    coocs2d-html5在使用cocoseditor时调用设备的accelerometer来使用重力感应
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/6081632.html
Copyright © 2020-2023  润新知