将字节数组保存到文件节点JS

Save byte array to file node JS

我想将 bytearray 保存到节点 js 中的一个文件中,因为 android 我正在使用下面的代码示例,任何人都可以建议我类似的方法

   File file = new File(root, System.currentTimeMillis() + ".jpg");
            if (file.exists())
                file.delete();
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(file);
                fos.write(bytesarray);
                fos.close();
                return file;
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

使用fs.writeFile将字符串或字节数组写入文件。

  • 文件<String> | <Buffer> | <Integer>文件名或文件描述符
  • 数据<String> | <Buffer> | <Uint8Array>
  • 选项<Object> | <String>
    • 编码<String> | <Null>默认='utf8'
    • 模式<Integer>默认=0o666
    • 标志<String>默认='w'
    • 回调<Function>

异步将数据写入文件,如果文件已存在则替换该文件。数据可以是字符串或缓冲区。

如果数据是缓冲区,则忽略编码选项。它默认为 'utf8'.

const fs = require('fs');

// Uint8Array
const data = new Uint8Array(Buffer.from('Hello Node.js'));
fs.writeFile('message.txt', data, callback);

// Buffer
fs.writeFile('message.txt', Buffer.from('Hello Node.js'), callback);

// string
fs.writeFile('message.txt', 'Hello Node.js', callback);

var callback = (err) => {
  if (err) throw err;
  console.log('It\'s saved!');
}

Leonenko 的回答 cites/copies 正确的 JavaScript 文档,但事实证明 writeFile 不能很好地与 Uint8Array 一起使用——它只是将字节写为数字:

"84,104,101,32,102,105,114,115,..."

要让它工作,必须将 Uint8Array 包装在缓冲区中:

fs.writeFile('testfile',new Buffer(ui8a),...)

工作代码段节点14.xx+ 将缓冲区写入文件

创建输出目录

  let rootDir = process.cwd()
  console.log("Current Directory"+ rootDir)

  let outDir = './out/';
  console.log("Out Directory"+ outDir)

  if (!fs.existsSync(outDir)){
      fs.mkdirSync(outDir);
  }else{
      console.log("Directory already exist");
  }
   
  // Save the raw file for each asset to the current working directory
  saveArrayAsFile(arrayBuffer,  outDir+ "fileName"+ new Date().getTime()+".png")

将数组缓冲区保存到文件路径

const saveArrayAsFile =  (arrayBuffer, filePath)=> {
      fs.writeFile(filePath, Buffer.from(arrayBuffer), 'binary',  (err)=> {
          if (err) {
              console.log("There was an error writing the image")
          }
          else {
              console.log("Written File :" + filePath)
          }
      });
};