我必须将文件上传到队列。但是似乎toByteArray()方法实际上并没有转换文件。为什么?
//upload the file to the queue
File file = new File("J:/Documents/Head Fund Share Class Attributes.xlsx");
//convert to byte array
byte[] array = null;
try {
array = Files.toByteArray(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//send the file data
headFundUploader.send("helloworld.q", array);
答案 0 :(得分:4)
如果您的代码段是可以正确编译的类的一部分,那么您必须从Java标准库以外的其他地方导入Files
类。 (标准Java SE库没有定义Files::toByteArray
方法。)
没有看到您的整个课堂,我们只能猜测哪个第三方库是...,所以这是有根据的猜测。
Guava(Google commons)库中有一个Files::toByteArray(File)
方法。方法的javadoc表示:
public static byte[] toByteArray(File file) throws IOException
将文件中的所有字节读入字节数组。
等效路径:
Files.readAllBytes(java.nio.file.Path)
。
但是看来toByteArray()方法实际上并没有转换文件。为什么?
这取决于您“转换”的意思。该方法的实际记录目的是仅读取文件的字节,而无需任何字符集解码或其他转换。但是我想您可以称之为将文件内容“转换”为字节数组。
如果您需要更详细的答案,则需要:
Files
类(您已完成!! )答案 1 :(得分:0)
如果我错了,请纠正我,但我认为您想使用Files.readAllBytes(Path).
为此:
import java.io.File;
import java.nio.file.Files;
File file = new File("J:/Documents/Head Fund Share Class Attributes.xlsx");
byte[] array = Files.readAllBytes(file.toPath());