node.js 读写文件

//path包含处理路径的方法
var path = require('path');
//fs模块包含所有文件操作函数
var fs = require('fs');

var str1 = "/home";
var str2 = "/git";
var str3 = "/NodeExploring";
//路径拼接
var dirPath = path.join(str1, str2, str3);
console.log(dirPath);

var str4 = "./IO";
//path.resolve将多个路径解析未一个规范的绝对路径
var dirPath2 = path.resolve(dirPath, str4);
console.log(dirPath2)

var str5 = "aaa";
var str6 = "./bbb";
//如过解析的路径不是绝对路径则将,将将当前路径加到前面构成绝对路径
var dirPath3 = path.resolve(str5, str6);
console.log(dirPath3);

var str7 = "/home/renlan/tem";
//计算一个路径到另一个路径的相对路径
var dirPath4 = path.relative(dirPath, str7);
console.log(dirPath4);

var str8 = "/home/renlan/tem.txt";
//获取文件所在目录
var dirPath5 = path.dirname(str8);
console.log(dirPath5);

//获取文件的扩展名
var extName = path.extname(str8);
console.log(extName);

//获取文件名,第二个参数未文件的扩展名
var fileName = path.basename(str8, extName);
console.log(fileName);

//获取系统路径的分隔符unix:'/', windows:'\\'
var sep = path.sep;
console.log(sep);

/************
 * 获取或目录信息
 * fs.stat() 返回一个stats对象
 * 
 * atime "Access Time"
 * mtime "Modified Time"
 * ctime "Change Time"
 * birthtime "Birth Time" 
 * *************/
fs.stat('./test', function (err, stats) {
    if (err) throw err;
    // console.log(stats);
});

//读取整个文件
fs.readFile('./test', 'UTF-8', function (err, data) {
    if (err) throw err;
    console.log( "read whole file: "+data);
});

/***************
 * fs.write(fd, buffer, offset, length[, position], callback)
 * fd 文件指针
 * buffer 写入数据的缓存
 * offset 缓存写入时开始的地方
 * position 写入文件开始的地方,null表示从当前位置读取
 * callback 三个参数 (err, written, buffer)
 * written 写入的字节数
 * ***********************/
fs.open('./test', 'a', (err, fd) => {
    var buffer = new Buffer("Writing to this file"),
        offset = 0,
        length = buffer.length,
        position = null;

    fs.write(fd,
        buffer,
        offset,
        length,
        position,
        (err, writen) => {
            if (err) throw err;
            console.log('write file successfully');
            console.log("write " + writen + " bytes");
            fs.close(fd,(err)=>{
                if(err) throw err;
            });
        });
});


/***************
 * fs.read(fd, buffer, offset, length, position, callback)
 * buffer 写入数据的缓存
 * offset 缓存写入时开始的地方
 * length 读取的字节数
 * position 读取文件开始的地方,null表示从当前位置读取
 * callback 三个参数 (err, bytesRead, buffer)
 * ********************/
fs.open('./test', 'r', (err, fd) => {
    if (err) throw err;
    var readBuffer = new Buffer(1024),
        bufferOffset = 0,
        bufferLength = readBuffer.length,
        filePosition = 0;
    fs.read(fd,
        readBuffer,
        bufferOffset,
        bufferLength,
        filePosition,
        (err, readBytes, buffer) => {
            if (err) throw err;
            console.log('read ' + readBytes + ' bytes');
            if (readBytes > 0) {
                //切分缓冲区,取出读入的数据部分
                console.log(buffer.slice(0, readBytes));
                console.log("read file from buffer: "+buffer.slice(0, readBytes).toString());
            }
            //关闭文件
            fs.close(fd,(err)=>{
                if(err) throw err;
            });

        });                                                                                                                                         
});




在Vue中使用Node.js读写文件时,需要在Vue项目的后端使用Node.js来执行文件操作。下面是一个简单的例子: 1. 首先,确保你已经安装了Node.js和npm。 2. 在Vue项目的根目录下,打开终端并运行以下命令来创建一个简单的Express服务器: ```bash npm init -y npm install express --save ``` 3. 创建一个名为`server.js`的文件,并在其中添加以下代码: ```javascript const express = require('express'); const fs = require('fs'); const app = express(); const port = 3000; app.get('/readFile', (req, res) => { fs.readFile('path/to/file.txt', 'utf8', (err, data) => { if (err) { console.error(err); res.status(500).send('Error reading file'); } else { res.send(data); } }); }); app.post('/writeFile', (req, res) => { const content = 'Hello, Vue!'; fs.writeFile('path/to/file.txt', content, 'utf8', (err) => { if (err) { console.error(err); res.status(500).send('Error writing file'); } else { res.send('File written successfully'); } }); }); app.listen(port, () => { console.log(`Server running at http://localhost:${port}`); }); ``` 替换`path/to/file.txt`为你要读写文件路径。 4. 在终端中运行以下命令,启动服务器: ```bash node server.js ``` 你会看到服务器已经在`http://localhost:3000`上运行。 5. 在Vue组件中,你可以使用`axios`或其他HTTP库来与服务器通信。下面是一个使用`axios`的例子: ```vue <template> <div> <button @click="readFile">Read File</button> <button @click="writeFile">Write File</button> <p>{{ fileContent }}</p> <p>{{ writeStatus }}</p> </div> </template> <script> import axios from 'axios'; export default { data() { return { fileContent: '', writeStatus: '', }; }, methods: { readFile() { axios.get('/readFile') .then(response => { this.fileContent = response.data; }) .catch(error => { console.error(error); }); }, writeFile() { axios.post('/writeFile') .then(response => { this.writeStatus = response.data; }) .catch(error => { console.error(error); }); }, }, }; </script> ``` 在上述例子中,我们在Vue组件中定义了两个按钮,分别用于读取文件和写入文件。当用户点击按钮时,通过发送HTTP请求与服务器进行通信。读取文件时,服务器将返回文件内容,并在Vue组件中展示;写入文件时,服务器将写入指定内容到文件,并在Vue组件中展示写入状态。 请注意,这只是一个简单的示例,你可以根据需要进行修改和扩展。同时,确保在服务器端进行适当的错误处理和安全性验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值