与 Java 的 Files.readAllBytes() 等效的 Java 脚本是什么?

What is the Javascript equivalent of Java's Files.readAllBytes()?

我需要在我的服务器应用程序上使用 javascript。我有一个保存 PDF 路径的变量。

现在我想将该文件作为字节数组读取以将其发送到另一台服务器。在 Java 中,我会做这样的事情:

String myPath = "\path\to\my.pdf";

try {
  byte [] myFile = Files.readAllBytes(Paths.get(myPath));

  //Own function
  sendData(myFile);
} catch (IO Exception e) {
  e.printStackTrace();
} 

我不知道 javascript 对应的内容是什么。使用 fs 库,我只能将文件作为 'Buffer':

类型的对象读取
import fs from 'fs';
let myPath = '\path\to\my.pdf';
let myFileAsBuffer = fs.readFileSync(myPath, { flag: 'r' });
//Own function
sendData(myFileAsBuffer);

但是我总是得到一个错误,因为服务器需要一个字节数组而不是一个缓冲区,它看起来像这样:

<Buffer 25 50 44 46 2d 31 2e 35 0d 0a 25 b5 b5 b5 b5 0d 0a 31 20 30 20 6f 62 6a 0d 0a 3c 3c 2f 54 79 70 ...>

您应该在调用 sendData 之前传播 Buffer 的可迭代对象 values():

sendData([...myFileAsBuffer.values()])

参见:buf.values()


这是 Java 的等效示例:

import fs from 'fs';

class Files {
  static readAllBytes(path) {
    return [...fs.readFileSync(path, { flag: 'r' }).values()];
  }
}

sendData(Files.readAllBytes('/path/to/my.pdf'));

请注意,fs.readFileSync 函数的 path 可以采用 various types,即 stringBufferURLinteger。上面示例中的 static 函数假设您的 path 是这四种类型之一。