file.toByteArray()方法有什么作用?

时间:2018-10-03 10:59:38

标签: java spring file spring-boot

我必须将文件上传到队列。但是似乎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);

2 个答案:

答案 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());