zoukankan      html  css  js  c++  java
  • 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()的位置

  • 相关阅读:
    《网络攻防第四周作业》
    《网络攻防第三周作业》20179313
    15.javaweb XML详解教程
    小程序新功能:直接进入内嵌网页!
    为什么要创业?听听扎克伯格怎么说
    面试官:“还有什么问题问我吗?”我...
    双十一为何规则复杂,套路多多
    如何设置电信光猫?图解手把手教你(超级详细)
    14.javaweb AJAX技术详解
    android黑科技系列——自动注入代码工具icodetools
  • 原文地址:https://www.cnblogs.com/YAN-HUA/p/10813504.html
Copyright © 2011-2022 走看看