概念:fs模块是文件操做模块,fs是 FileSystem的简写。它用来对文件,文件夹进行操做。javascript
// 引入模块。
// 可使用var、let,可是建议使用const,由于咱们不但愿它被改变
const fs = require('fs');
复制代码
全部的文件操做系统都是具备同步和异步的形式:html
const fs = require('fs');
fs.unlink('/tmp/hello', (err) => {
if (err) throw err;
console.log('已成功删除 /tmp/hello');
});
复制代码
const fs = require('fs');
try {
fs.unlinkSync('/tmp/hello');
console.log('已成功删除 /tmp/hello');
} catch (err) {
// 处理错误
}
复制代码
fs.rename('/tmp/hello', '/tmp/world', (err) => {
if (err) throw err;
console.log('重命名完成');
});
fs.stat('/tmp/world', (err, stats) => {
if (err) throw err;
console.log(`文件属性: ${JSON.stringify(stats)}`);
});
复制代码
fs.rename('/tmp/hello', '/tmp/world', (err) => {
if (err) throw err;
fs.stat('/tmp/world', (err, stats) => {
if (err) throw err;
console.log(`文件属性: ${JSON.stringify(stats)}`);
});
});
复制代码
$ cat script.js
function bad() {
require('fs').readFile('/');
}
bad();
$ env NODE_DEBUG=fs node script.js
fs.js:88
throw backtrace;
^
Error: EISDIR: illegal operation on a directory, read
<stack trace.>
复制代码
异步格式:java
fs.readFile('文件路径'[,选项], (err, data) => {
if (err) throw err;
console.log(data);
});
复制代码
说明:node
const fs = require("fs")
fs.readFile('文件路径',"utf8", (err, data) => {
if (err) throw err;
console.log(data);
});
复制代码
同步格式: 与异步格式不一样在于:api
const fs = require("fs")
let rs = fs.readFileSync('文件路径',"utf8");
console.log(rs)
复制代码
覆盖写入 writeFile浏览器
功能:向指定文件中写入字符串(覆盖写入), 若是没有该文件则尝试建立该文件。它把把文件中的内容所有删除,再填入新的内容。bash
格式:fs.writeFile(var1, var2, var3, var4);服务器
参数1: 要写入的文件路径 --- 相对路径和绝对路径都可,推荐使用绝对路径app
参数2: 要写入文件的字符串异步
参数3: 配置项,设置写入的字符集,默认utf-8
参数4: 写入完成后触发的回调函数,有一个参数 --- err (错误对象)
const fs = require('fs')
fs.writeFile('./a.txt', 'hello world niahi \n asfsdf', err => {
if (err) {
console.info(err)
throw err
}
})
复制代码
功能 :向指定文件中写入字符串(追加写入), 若是没有该文件则尝试建立该文件
格式:fs.appendFile(var1, var2, var3, var4);
参数1: 要写入的文件路径 --- 相对路径和绝对路径都可,推荐使用绝对路径
参数2: 要写入文件的字符串
参数3: 配置项,设置写入的字符集,默认utf-8
参数4: 写入完成后触发的回调函数,有一个参数 --- err (错误对象)
const fs = require('fs')
fs.appendFile('./a.txt', '\n 为天地立命', err => {
if (err) {
console.info(err)
throw err
}
})
复制代码
在读取文件时,写相对路径是容易出问题的。
解决方法,就是在操做文件时,使用绝对路径来定位文件。 __dirname __filename 获取绝对路径
绝对路径: 从磁盘根目录开始到指定文件的路径。
相对路径:是以某个文件的位置为起点,相对于这个位置来找另外一个文件。
nodejs中提供了两个全局变量来获取获取绝对路径:
它是一个核心模块,用来处理路径问题:拼接,分析,取后缀名。
快速搭建服务器:
// http.js
// 引入核心模块http
const http = require('http');
// 建立服务
const server = http.createServer(function(req, res) {
console.log(req.connection.remoteAddress);
res.end('hello world');
});
// 启动服务
server.listen(8081, function() {
console.log('success');
});
复制代码
// 建立服务
const server = http.createServer((req, res) => {
console.log(req.connection.remoteAddress);
res.end('hello world');
});
复制代码
其中的参数是一个函数,这个函数是一个匿名函数,这个函数充当回调函数的角色,当有http请求时,它会自动被调用。
这个回调函数有它有两个参数。这两个参数很是重要,也很是复杂.
做用:url模块用来对url(例如:itcast.cn:80/schools/stu…
步骤:
let urlobj = url.parse(req.url); // urlobj对象中,就有咱们须要的信息
urlobj.pathname :获取用户输入的url的路径名 ('/schools/students')
urlobj.search: '?id=18&name=zs',
urlobj.query: 获取用户输入的url中的查询字符串( 'id=18&name=zs' )
urlobj.path: '/schools/students?id=18&name=zs',
urlobj.href: '/schools/students?id=18&name=zs'
复制代码
上面urlobj.query只是得到了传递的所有参数,咱们通常还需从地址栏中分析传递的数据。即从 itcast.cn:80/schools/stu…
用来对url中的查询字符串这部分进行处理。nodejs中提供了querystring这个核心模块来帮助咱们处理这个需求。
const qs= require('querystring');
let obj = qs.parse('id=18&name=zs');
console.log(obj)
复制代码