打开文件后如何访问文件中包含的JS数组?

更新: 我要保存以下形式的多维数组:

var a = ["t1","a",["t2","b",["t3","b"],["t4","c",["t5","b"]],],["t6",["t7","b"]]];

在使用JSON.stringify(a)调用标准保存文件功能的文件中-没有“ var a =”和“;”然后我将文件打开到这样的变量:

<a id="nof"><label for="fid">Open Data</label></a>
<input id="fid" type="file" style="position: fixed; top: -100em" onchange="ReadFile(this)">

function ReadFile(input) {
    var output;

    if (input.files.length === 0) {
        output = 'No file selected';
        window.setTimeout(ReadFile,1000);
        return;
    }

    var fr = new FileReader();
    fr.onload = function() {
        var data = fr.result;
        var array = new Int8Array(data);
        output = JSON.stringify(array,null,'  ');

        console.log(array); // output //<------ 
    };
    fr.readAsArrayBuffer(input.files[0]);

我试图改编本文中的代码:Using FileReader.readAsArrayBuffer() on changed files in Firefox),但是我无法将数据分配为JS数组。我从“ array”变量进入控制台的是:

Int8Array(117) [91,34,116,49,32,118,57,53,56,51,44,97,91,50,98,93,52,99,54, …]

显然是因为数据已转换为int8。

从“输出”变量中获取:

{"0": 91,"1": 34,"2": 116,"3": 49,"4": 32,"5": 118,"6": 49,"7": 57,"8": 49,"9": 49,"10": 49,"11": 53,"12": 49,"13": 56,"14": 49,"15": 51,"16": 52,"17": 48,"18": 34,"19": 44,"20": 34,"21": 97,"22": 34,"23": 44,"24": 91,"25": 34,"26": 116,"27": 50,"28": 34,"29": 44,"30": 34,"31": 97,"32": 34,"33": 44,"34": 34,"35": 98,"36": 34,"37": 44,"38": 91,"39": 34,"40": 116,"41": 51,"42": 34,"43": 44,"44": 34,"45": 97,"46": 34,"47": 44,"48": 34,"49": 98,"50": 34,"51": 93,"52": 44,"53": 91,"54": 34,"55": 116,"56": 52,"57": 34,"58": 44,"59": 34,"60": 97,"61": 34,"62": 44,"63": 34,"64": 98,"65": 34,"66": 44,"67": 34,"68": 99,"69": 34,"70": 44,"71": 91,"72": 34,"73": 116,"74": 53,"75": 34,"76": 44,"77": 34,"78": 97,"79": 34,"80": 44,"81": 34,"82": 98,"83": 34,"84": 93,"85": 93,"86": 93,"87": 44,"88": 91,"89": 34,"90": 116,"91": 54,"92": 34,"93": 44,"94": 34,"95": 97,"96": 34,"97": 44,"98": 34,"99": 98,"100": 34,"101": 44,"102": 91,"103": 34,"104": 116,"105": 55,"106": 34,"107": 44,"108": 34,"109": 97,"110": 34,"111": 44,"112": 34,"113": 98,"114": 34,"115": 93,"116": 93,"117": 93}

那么,将文件数据分配为JS数组变量有什么必要?

***出于效率原因,我不想使用比上面的示例数组(在页面顶部)更复杂的格式,该示例数组使用更多字符。

yuelao0308 回答:打开文件后如何访问文件中包含的JS数组?

以下以html div显示的代码。 如果要存储在数组中,请替换它。

尝试一下:

function readFile(file) {
   return new Promise((resolve,reject) => {
let fr = new FileReader();
fr.onload = x=> resolve(fr.result);
fr.readAsText(file);
})}

async function read(input) {
  msg.innerText= await readFile(input.files[0]);
}

<input type="file" onchange="read(this)"/>
<h3>Content:</h3><pre id="msg"></pre>
本文链接:https://www.f2er.com/3095588.html

大家都在问