js实现读写
JavaScript 文件读取
在浏览器环境中,JavaScript 通常无法直接访问文件系统,但可以通过以下方式实现文件读取:
File API 读取本地文件

document.getElementById('fileInput').addEventListener('change', function(e) {
const file = e.target.files[0];
const reader = new FileReader();
reader.onload = function(e) {
const content = e.target.result;
console.log(content);
};
reader.readAsText(file);
});
Node.js 文件读取
const fs = require('fs');
// 同步读取
const data = fs.readFileSync('file.txt', 'utf8');
console.log(data);
// 异步读取
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
JavaScript 文件写入
浏览器环境写入 浏览器端无法直接写入文件系统,但可以创建下载:

function downloadFile(content, filename, contentType) {
const a = document.createElement('a');
const blob = new Blob([content], {type: contentType});
a.href = URL.createObjectURL(blob);
a.download = filename;
a.click();
}
downloadFile('Hello World', 'example.txt', 'text/plain');
Node.js 文件写入
const fs = require('fs');
// 同步写入
fs.writeFileSync('file.txt', 'Hello World', 'utf8');
// 异步写入
fs.writeFile('file.txt', 'Hello World', 'utf8', (err) => {
if (err) throw err;
console.log('File saved');
});
现代浏览器文件系统访问
使用 File System Access API(需要 HTTPS 环境):
async function saveFile(content) {
try {
const handle = await window.showSaveFilePicker({
types: [{
description: 'Text files',
accept: {'text/plain': ['.txt']},
}],
});
const writable = await handle.createWritable();
await writable.write(content);
await writable.close();
} catch (err) {
console.error(err);
}
}
注意事项
- 浏览器环境文件操作需要用户主动触发(如点击事件)
- Node.js 需要文件系统权限
- 生产环境应考虑错误处理和权限检查
- 大文件处理应使用流式读写避免内存问题






