JS 写入到文件

JavaScript 写入数据到某个文件

代码:

//js写文件

function doSave(value, type, name) {

  var blob;

  if (typeof window.Blob == "function") {

    blob = new Blob([value], {

      type: type

    });

  } else {

    var BlobBuilder = window.BlobBuilder || window.MozBlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder;

    var bb = new BlobBuilder();

    bb.append(value);

    blob = bb.getBlob(type);

  }

  var URL = window.URL || window.webkitURL;

  var bloburl = URL.createObjectURL(blob);

  var anchor = document.createElement("a");

  if ('download' in anchor) {

    anchor.style.visibility = "hidden";

    anchor.href = bloburl;

    anchor.download = name;

    document.body.appendChild(anchor);

    var evt = document.createEvent("MouseEvents");

    evt.initEvent("click", true, true);

    anchor.dispatchEvent(evt);

    document.body.removeChild(anchor);

  } else if (navigator.msSaveBlob) {

    navigator.msSaveBlob(blob, name);

  } else {

    location.href = bloburl;

  }

}

var test = "hello world 123";
doSave(test, "txt", "hello.txt");

 

 

参考链接:

https://www.cnblogs.com/alonesky/p/10049308.html

### 使用 JavaScript 写入本地文件 #### 浏览器环境中的局限性 在浏览器环境中,由于安全原因,JavaScript 被限制访问用户的本地文件系统。然而,可以利用 `Blob` 和 `<a>` 标签来触发下载功能,让用户保存文件到本地。 ```javascript function saveTextToFile(text, filename) { const blob = new Blob([text], {type: 'text/plain'}); const link = document.createElement('a'); if (link.download !== undefined) { // feature detection // Create and trigger download URL const url = URL.createObjectURL(blob); link.setAttribute("href", url); link.setAttribute("download", filename); link.style.visibility = 'hidden'; document.body.appendChild(link); link.click(); document.body.removeChild(link); // Revoke object URL after the click event has been triggered window.URL.revokeObjectURL(url); } } ``` 此方法创建了一个临时的对象 URL 并通过模拟点击链接的方式促使用户下载文件[^1]。 #### Node.js 环境下的实现方式 Node.js 提供了更直接的方式来操作文件系统。下面是一个简单的例子展示如何使用内置模块 `fs` 来同步地写入文件: ```javascript const fs = require('fs'); try { fs.writeFileSync('./example.txt', 'Some content!'); } catch(err) { console.error(err.message); } console.log('The file has been saved!'); ``` 对于异步的操作,则推荐采用如下形式以避免阻塞事件循环: ```javascript const fs = require('fs').promises; async function writeFileAsync() { try { await fs.writeFile('./example.txt', 'Data to append', { flag: 'a' }); console.log('File written successfully.'); } catch(error){ console.error(`Failed writing to file ${error}`); } } writeFileAsync(); ``` 上述代码片段展示了最佳实践之一——错误处理机制的重要性以及选择合适的方法(同步 vs 异步)。当涉及到磁盘 I/O 操作时,优先考虑非阻塞性的解决方案有助于提高应用程序性能和响应速度[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值