猿问

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

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


萧十郎
浏览 316回答 2
2回答

绝地无双

如果您的代码片段是编译没有错误的类的一部分,那么您必须Files从 Java 标准库之外的其他地方导入了一个类。(标准 Java SE 库不定义Files::toByteArray方法。)没有看到你的整个班级,我们只能猜测哪个 3rd 方库是......所以这是一个有根据的猜测。Files::toByteArray(File)Guava (Google commons) 库中有一个方法。该方法的javadoc是这样说的:public static byte[] toByteArray(File file) throws IOException将文件中的所有字节读入字节数组。路径等效:Files.readAllBytes(java.nio.file.Path).但似乎 toByteArray() 方法实际上并未转换文件。为什么?这取决于你所说的“转换”是什么意思。该方法的实际记录目的是简单地读取文件的字节,而无需任何字符集解码或其他转换。但我想你可以称之为将文件内容“转换”为字节数组。如果您有更详细的答案,您将需要:确认Files您正在导入哪个类(您已经完成了!),告诉我们您所说的“转换”是什么意思,以及告诉我们当您在应用程序中运行该代码时会发生什么,以及您认为它没有“转换”文件的原因。

心有法竹

如果我错了,请纠正我,但我认为您想使用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());
随时随地看视频慕课网APP

相关分类

Java
我要回答