js实现io
JavaScript 实现 I/O 操作
JavaScript 的 I/O 操作通常涉及文件读写、网络请求和用户交互。以下是几种常见的实现方式:
文件读写(Node.js 环境)
在 Node.js 中,可以使用 fs 模块进行文件操作。同步和异步方法均可用。
同步读取文件:
const fs = require('fs');
const data = fs.readFileSync('file.txt', 'utf8');
console.log(data);
异步读取文件:
const fs = require('fs');
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
写入文件:
const fs = require('fs');
fs.writeFile('file.txt', 'Hello World', (err) => {
if (err) throw err;
console.log('File written');
});
网络请求
使用 fetch API 进行 HTTP 请求:
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
使用 XMLHttpRequest:
const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.example.com/data');
xhr.onload = function() {
if (xhr.status === 200) {
console.log(xhr.responseText);
}
};
xhr.send();
用户交互
通过浏览器 API 实现用户输入输出:
const userInput = prompt('Enter your name:');
console.log('User entered:', userInput);
alert('This is an alert message.');
流操作(Node.js)
对于大文件或持续数据,可以使用流:
const fs = require('fs');
const readStream = fs.createReadStream('largefile.txt');
const writeStream = fs.createWriteStream('output.txt');
readStream.pipe(writeStream);
readStream.on('end', () => console.log('File copied'));
使用 Promise 封装异步 I/O
将回调风格的 I/O 操作转换为 Promise:
const fs = require('fs').promises;
async function readFile() {
try {
const data = await fs.readFile('file.txt', 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}
}
readFile();
注意事项
- 浏览器端 JavaScript 无法直接访问文件系统(除非使用 File API 或用户主动上传)。
- Node.js 的
fs模块不适用于浏览器环境。 - 网络请求可能受同源策略限制,需处理 CORS 问题。
根据具体场景选择合适的方法,浏览器端优先使用 fetch 或 XMLHttpRequest,Node.js 端使用 fs 模块或流操作。







