java - java如何在内部将任何类型的文件(图像、pdf等)转换为字节数组?

标签 java arrays stream java-io

我目前正在研究Java I/O,虽然它很容易工作和处理字节流和字符流。我只是想知道,java如何设法将任何类型的文件(图像,pdf等)转换为它的文件字节数组表示。

最佳答案

对于计算机来说,文件只不过是磁盘上的字节集合(以及一些元数据,如名称、路径、数据...)。实际上并不存在文件“类型”这样的东西。

但是 pdf 文件到底意味着什么呢?这是一个约定,我们说 pdf 文件的名称以“.pdf”结尾(也称为扩展名),并且该文件中存储的第一个字节是 25 50 44 46(魔数(Magic Number) https://en.wikipedia.org/wiki/List_of_file_signatures )。

更直接地回答你的问题:操作系统负责从磁盘读取文件。 Java只使用正确的系统调用。这个调用是在具体的JVM中实现的。

PS:如果您想自己调查这一点,您可以使用十六进制编辑器以字节形式查看每个文件。 (选择您最喜欢的: https://en.wikipedia.org/wiki/Comparison_of_hex_editors )在编辑器中,您将看到文件实际上只不过是字节。

关于java - java如何在内部将任何类型的文件(图像、pdf等)转换为字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52217870/

相关文章:

Java - 关闭多层流包装器

python - PIL.Image.open() 给出 IOError : cannot identify image file

arrays - 在 Swift 中使用 .filter 和字典数组

java - 神经元结果有点偏差

java - 为什么这种积极的回顾不起作用?

java - 是否有 Javolution ArrayFactory 的类似物

java - 将文件中的每个单词读取到数组

javascript - 递归:从数组javascript中获取对象

node.js - 重用写入流而不结束它并一遍又一遍地声明新流

java - 在WebSocketHandler中访问HTTP session (Spring-websocket)