nodejs的文件读取

来源:互联网 发布:数据分析有哪些方法 编辑:程序博客网 时间:2024/05/19 00:38
文件的读取
##fs -- file system(文件读取系统)
- 使用
- 是否需要 require 引入 -- 需要 require
- var fs = require('fs');
- 常用API
- 读
-异步读取:
- fs.readFile(filename, callback(err,data));
- 文件路径 文件夹的路径 + 文件名和后缀 ???
- callback(err, data)
- 执行时机
- 文件读完的时候, 事件被触发, 回调函数被执行
- err
- err 被赋值 一个 对象
- err null
- data
- 数据类型:buffer
- 文字:buffer.toString();
- 图片:
实例代码:
// 读取出文件的内容 入读的内容按照 buffer 处理
fs.readFile('content.txt', function(err, data) {
if (err) {
console.error(err);
} else {
console.log(data);
console.log(data.toString());
}
});
异步处理错误的方式:
通过回调函数中的第一个值err来获取


- fs.readFileSync(filename);
- 文件路径
- 怎么得到 读取回来的结果: 返回值

实例代码:
var fs = require('fs');
/*
//同步读取, 函数的返回值携带读取回来的内容,默认是 buffer 类型
var data = fs.readFileSync('content.txt');
console.log(data);

// 设置编码格式 函数的返回值携带读取回来的内容,由于设置了编码格式,相当于告诉系统两个信息:
// 1.程序员需要的返回值是 string 类型
// 2.程序员需要这个string的编码格式是...
var data = fs.readFileSync('content.txt', 'utf8'); //utr8 编码格式
console.log(data);
同步处理错误的方式:

// 与异步处理不同, 错误直接以抛异常的方式给出
// 程序员必须使用 try catch 语句才能接收处理 这些异常
// 此处 '红楼梦.txt' 文件不存在
try {
var data = fs.readFileSync('红楼梦.txt', 'utf8');
console.log(data);
} catch (err) {
console.error(err);
console.trace( 'readFileSync 出错了' );
}
*/

- 写
-异步写文件
- fs.writeFile(file, data[, options], callback)
- 文件路径
- 写入的内容
- callback
- err

[, options]中的内容:
// 
// 其中: options 是用来配置 writeFile 这个函数的行为的
// 我们关心的是 flag 属性,这个属性默认是 'w'
// 例如: { flag: 'w' } 这个属性

//r :以读取模式打开文件。
//r+ :以读写模式打开文件。
//w :以写入模式打开文件,如果文件不存在则创建。
//w+ :以读写模式打开文件,如果文件不存在则创建。
//a :以追加模式打开文件,如果文件不存在则创建。
//a+ :以读取追加模式打开文件,如果文件不存在则创建。

实例代码:
var fs = require('fs');
var control = ['r', 'r+', 'w', 'w+', 'a', 'a+'];
var path='./login.txt'(我要写入的文件的路径)
var data = '西天取经\n';

fs.write(path,data,{flag:a},function(err){
if(err){
console.log(err)
}else{
console.log('文件写完了')
}
})

-
同步写文件:
- fs.writeFileSync(file, data[, options]);
- 文件路径
- 写入的内容
- 错误处理 : 同步的方式,依靠try catch
- try
- catch
-实例代码:

var data = '西天取经\n';

fs.writeFileSync('out.txt', data);
fs.writeFileSync('out.txt', data, {flag:'a+'} );


-错误处理:
try{
fs.writeFileSync('out.txt', data, {flag:'r'} );
}catch (err){
console.error(err);
}

- 同步与异步的概念(难点)
- 区别


#### /favicon.ico 处理
- 使用 路由分发
- 使用 读文件


#### 呈现网页
- 把 form 页显示在浏览器
- 异步读取文件,并且把文件返回给浏览器 难点

回调函数:当事件被触发的时候会调用


将网页呈现
var http = require('http');
var url = require('url'); //引入 url 包
var fs = require('fs'); //引入fs包


var server = http.createServer(function (req, res) {

console.log(req.method); //方法
console.log(req.url); //url 文件路径确定的是需要访问的资源

var temp = url.parse(req.url, true);
var pathName = temp.pathname;
var query = temp.query;


//路由
switch (pathName){

case '/login':
res.writeHead(200, 'OK', {
'content-type':'text/html;charset=utf8' //html 无格式
});

//返回网页
var path = './login.html';
fs.readFile(path, function (err, data) {
//res.end(); //1
if(err){
console.error(err);
}else {
console.log(data);
res.end(data); //2
}
});
//res.end(); //3
break;
case '/favicon.ico':
//处理图标
var pathIco = './favicon.ico';
fs.readFile(pathIco, function (err, data) {
if(err){
console.error(err);
}else {
console.log(data);
res.end(data);
}
});
break;
default:
res.writeHead(404, 'not found', {
'content-type':'text/html;charset=utf8' //html 无格式
});
res.write('好逗啊');
res.end('网页没找到');

}
});
console.log('你好。我是猫');

server.listen(3002, function listenCallback() {
console.log('started');
});
1 0
原创粉丝点击