• node.js入门(二)文件系统


    服务端对文件进行读、写是很常用的功能,那么怎么实现读、写?

    使用fs模块,fs模块又两个方法readFile()和writeFile(),两个方法就是对文件进行读、写的

    1、读取文件使用readFile(fileName,callback)方法,该方法接受两个参数,fileName:需要读取的文件名;callback:读取的回调函数,回调函数有两个参数 分别为err读取错误,和data读取到的内容

    在项目根目录新建一个index.txt,并写入一些内容

    const http = require("http")
    const fs = require("fs")
    var server = http.createServer(function (req,res) {
        res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});
        // 异步读取
        fs.readFile('./index.txt',function (err,data) {
            if(err){
                res.write("文件不存在")
            }else {
                res.write(data)
            }
            res.end()
        })
        // 同步读取
        var data = fs.readFileSync('index.txt');
        console.log("同步读取: " + data.toString());
    })
    server.listen(8080)

    启动服务器,浏览器访问,可以看到浏览器输入了文件的内容

    如果使用console在命令工具中打印输出的是buffer,这是原始的二进制数据,服务器除了要出来文本,还要处理图片等二进制文件

    如果想要看到文字就要使用data.toString()

    2、对文件写入内容使用writeFile(fileName,data[,option],callback)方法

    fileName:为需要写入的文件;

    data:为写入的内容;

    callback:写入的回调函数;

    如果options是一个字符串,则他指定字符编码

    const http = require("http")
    const fs = require("fs")
    var server = http.createServer(function (req,res) {
        res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});
        fs.writeFile('./index.txt','我是通过node.js的文件系统fs.writeFile写入文件的内容','utf8',function (err) {
            // 异步读取
            fs.readFile('./ceshi.txt',function (err,data) {
                if(err){
                    res.write("文件不存在")
                }else {
                    res.write(data)
                }
                res.end()
            })
        })
    })
    server.listen(8080)
    

    打开index.txt文件可以看到内容已经写入了,但是如果index.txt原本就有内容,再写入,那么原来的内容将被新写入的内容替代

    更多文件操作可以去官网查看

    在项目根目录新建一个www文件夹,在文件新建a.html、b.html

    a.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            div{
                 300px;
                height: 300px;
                margin: 0 auto;
                background-color: aqua;
            }
            p{
                text-align: center;
                color: red;
                font-size: 30px;
            }
        </style>
    </head>
    <body>
    <div>
        <p>a.html</p>
    </div>
    </body>
    </html>
    

    b.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            div{
                 800px;
                height: 300px;
                margin: 0 auto;
                background-color: burlywood;
            }
            p{
                text-align: center;
                color: red;
                font-size: 30px;
            }
        </style>
    </head>
    <body>
    <div>
        <p>这是b.html页面</p>
    </div>
    </body>
    </html>
    

    server.js

    const http = require("http")
    const fs = require("fs")
    var server = http.createServer(function (req, res) {
        var fileName = './www' + req.url
        fs.readFile(fileName, function (err, data) {
            console.log("bbbbbbb")
            if (err) {
                res.write("404")
            } else {
                res.write(data)
            }
            res.end() 
        })
        console.log("aaaaaa")
    })
    server.listen(8080)

    启动服务,浏览器访问localhost:8080/a.html 和 localhost:8080/b.html 可以看到确实按照html的样式显示了

    注意打印的内容顺序,res.end()的位置

  • 相关阅读:
    我的前端故事----欢乐大富翁( ̄︶ ̄)↗ (摇骰子+棋盘)
    我的前端故事----优美的编辑器GitHub Atom
    我的前端故事----Ajax方式和jsonp的实现区别
    关于Web服务器的认识
    Django--全文检索功能
    对Ajax连接的认识~为毛不能上传文件!!!
    前端页面--天猫右侧信息栏弹出效果实现
    前端页面--瀑布流布局的实现
    Django分析之如何自定义manage命令
    Django分析之使用redis缓存服务器
  • 原文地址:https://www.cnblogs.com/YAN-HUA/p/10813504.html
Copyright © 2020-2023  润新知