将字节数组保存到文件节点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)
}
});
};
我想将 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)
}
});
};