javascript - 如何将文本保存到文件并再次读取它,但在javascript中另存为二进制文件

标签 javascript typescript io binary

我正在使用 FileSaver.js from a SO question 从字符串构建文件保护程序

let byteChars = atob("my string");
let byteNumbers = new Array(byteChars.length);
for (var i = 0; i < byteChars.length; i++) {
  byteNumbers[i] = byteChars.charCodeAt(i);
}
let byteArray = new Uint8Array(byteNumbers);
var data:Blob = new Blob([byteArray], {type: "application/octet-stream"});
var filename:string = filename + '.myext';
saveAs(data, filename, true);

然后我必须使用 Javascript 的 FileReader 将其读回“我的字符串”:

let fr = new FileReader();
fr.onload = (e:FileReaderEvent) => {
    let result:any = e.target.result;
    //I don't know what I have to do with this type of data to get "my string" back
    };
fr.readAsBinaryString(file);

最佳答案

编辑、更新

写入文件

let byteChars = atob("my string");
let byteNumbers = new Array(byteChars.length);
for (var i = 0; i < byteChars.length; i++) {
  byteNumbers[i] = byteChars.charCodeAt(i);
}
let byteArray = new Uint8Array(byteNumbers);
var data = new Blob([byteArray], {type: "application/octet-stream"});
saveAs(data, "myfile.abc");

读取文件

<input type="file">
<script>
 var reader = new FileReader();
 reader.addEventListener("load", function(e) {
   document.body.innerHTML += "<br>" + btoa(e.target.result);
 });
  document.querySelector("input[type=file]")
  .addEventListener("change", function(e) {
     reader.readAsBinaryString(e.target.files[0])
  })
</script>

plnkr http://plnkr.co/edit/0KVhXnd0JpysplDLcAlC?p=preview


您可以使用TextEncoder()TextDecoder()FileReader().readAsBinaryString()

var str = "my string";
var encoder = new TextEncoder();
var encodedBytes = encoder.encode(str);
// do file save stuff
var decoder = new TextDecoder();
var decodedBytes = decoder.decode(encodedBytes);

console.log(encodedBytes, decodedBytes);

// alternatively, using `FileReader()`
var reader = new FileReader();
reader.onload = function() {
  console.log("FileReader result:", reader.result)
}
reader.readAsBinaryString(new Blob([encodedBytes]))

关于javascript - 如何将文本保存到文件并再次读取它,但在javascript中另存为二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38112802/

相关文章:

javascript - 插入前 Firebase 检查数据是否存在

javascript:在调用之间保存变量的值?

typescript - 使用过滤的 keyof 类型索引多态 "this"类型

io - 如何在不使用特殊二进制格式的情况下读取VHDL/modelsim中的二进制数据

C 从文件中读入字符串,拆分成数组

javascript - Flutter - 方法 'then' 被调用为 null

javascript - d3 版本 4 rescaleX 其中 X 比例是scaleTime

javascript - Angular2 : [routerLinkActive] ="[' active']"not updating on _router. 导航

typescript - typings 可以从 package.json 自动安装 d.ts 吗?

C、读取二进制文件?