我想将bytearray保存到节点js中的文件中,对于android I' m使用下面的代码示例。任何人都可以建议我采用类似的方法吗?
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();
}
答案 0 :(得分:6)
Leonenko的回答引用/复制了正确的JavaScript文档,但事实证明,writeFile与Uint8Array不能很好地匹配 - 它只是将字节写为数字:
“84,104,101,32,102,105,114,115,...”
要使其工作,必须将Uint8Array包装在缓冲区中:
fs.writeFile('testfile',new Buffer(ui8a),...)
答案 1 :(得分:2)
使用fs.writeFile将字符串或字节数组写入文件。
<String> | <Buffer> | <Integer>
文件名或文件描述符<String> | <Buffer> | <Uint8Array>
<Object> | <String>
<String> | <Null>
默认='utf8'<Integer>
默认= 0o666 <String>
default ='w'<Function>
异步将数据写入文件,替换文件(如果已存在)。数据可以是字符串或缓冲区。
如果数据是缓冲区,则忽略编码选项。它默认为'utf8'。
fs.writeFile('message.txt', 'Hello Node.js', (err) => {
if (err) throw err;
console.log('It\'s saved!');
});
答案 2 :(得分:0)
创建输出目录
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")
将数组缓冲区保存到filePath
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)
}
});
};