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)/chownSyncfs.fchown(fd, uid, gid, callback)/fchowmSync- 更改文件所有权的操作需要用户有一定权限
更改文件权限
fs.chmod(path, mod, callback)/chmodSyncfs.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路径上增加或替换标签 - 如果原
url是href类型,则会插入或替换以最后一个/为基础 - 如果原
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)
nodejs复习03的更多相关文章
- nodejs复习02
process 这个模块是单线程的,无法完全利用多核CPU 基本信息 //程序目录 process.cwd(); //应用程序当前目录 process.chdir('/home'); //改变应用程序 ...
- nodejs复习01
console 格式化 console.log("%s:%s", "a", "b") //字符串 console.log("%d. ...
- nodejs复习05
stream 可读流 fs.pause()方法会使处于流动模式的流停止触发data事件,切换到非流动模式并让后续数据流在内部缓冲区 var fs = require('fs') var rs = fs ...
- nodejs复习04
TCP/UDP网络应用 创建TCP服务器客户端 socket套接字对象实例,是对TCP协议的一个基本封装接口 clientt套接字对象实例 //server.js var net = require( ...
- C#基础总复习03
继续更新...接下来就是面向对象的知识了 1.面向对象:概念:使用面向对象的思想进行编程可以让的程序变得扩展性更高,便于维护: 我们在现实生活中去描述一个人的时候,通过描述这个人的特征和行为. 我们在 ...
- NIO复习03
SocketChannel: 1. Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道.可以通过以下2种方式创建SocketChannel: 打开一个SocketChan ...
- nodeJs学习-03 GET数据请求,js拆解/querystring/url
原生JS解析参数: const http = require('http'); http.createServer(function(req,res){ var GET = {}; //接收数据容器 ...
- nodejs+websocket制作聊天室视频教程
本套教程主要讲解了node平台的安装,node初级知识.node 服务器端程序响应http请求,通过npm安装第三方包,websocket即时通讯.聊天页面界面制作.拖动原理.拖动效果.遮罩效果.定位 ...
- 编译原理--02 自顶向下、自底向上的LR分析复习(清华大学出版社第3版)
前言 目录 01 文法和语言.词法分析复习 02 自顶向下.自底向上的LR分析复习 03 语法制导翻译和中间代码生成复习 04 符号表.运行时存储组织和代码优化复习 第4章 自顶向下的语法分析方法 确 ...
随机推荐
- codevs3304 水果姐逛水果街
题目描述 Description 水果姐今天心情不错,来到了水果街. 水果街有n家水果店,呈直线结构,编号为1~n,每家店能买水果也能卖水果,并且同一家店卖与买的价格一样. 学过oi的水果姐迅速发现了 ...
- oracle DML(数据管理语言)sql 基本语句
- 关于li元素嵌套的事儿
今天阅读<锋利的jQuery>第二版2.6节案例研究部分的时候,遇到一个问题. <ul> <li class="a1"><a href=& ...
- Windows下将nginx安装为服务运行
今天看到nginx这个小服务器软件正式版更新到了1.4.2,想玩下它.这个服务器软件虽小,但功能强大,是开源软件,有着良好的性能,被很多个人.企业,甚至大型企业所使用! 由于是在Windows下,所以 ...
- C和指针 第十六章 标准函数库
字符串转换: long int strtol(char const *string, char **unused, int base); 将字符串转换为数值形式,遇到非法字符停止,如果stop不是NU ...
- CMake学习笔记
C++开发者必备技能CMake 先简单介绍一下,CMake是一个跨平台的编译工具,它可以根据不用的平台,不同的编译环境,生成不同的MakeFile,从而控制编译的过程. 使用CMake的步骤: 1. ...
- 耿丹CS16-2班助教总结
Deadline: 2016-1-7 11:59pm 开篇有言 --又是一年末,不似风光,却添风霜,顶霾前进,踽踽独行,可乎? 助教那些事儿 助教这份工作是之前就担任过的,很羞愧,当时才担任了几天就撒 ...
- angular开发单页面应用--页面资源部分
关于angular是什么,能够干什么就不在这里解释了,自行搜索了,或者等稍晚一点再解释... angular适合开发单页面应用,这句话在介绍angular的网站和博客里都可以提到.因为angular是 ...
- Qt 程序打包发布
Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,Qt 官方开发环境里自带了一个工具:windeployqt.exe.在Qt安装目录如:C:\Qt\Qt5.7. ...
- 数据库sql语句规则
sql练习: 创建一个名称为mydb1的数据库. create database mydb1; 查看库 show databases; 创建一个使用utf-8字符集的mydb2数据库. create ...