当前位置: 首页 > 知识库问答 >
问题:

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

许马鲁
2023-03-14

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

共有2个答案

巫马泓
2023-03-14

Java 本身不会将文件转换为字节数组。如前所述@Toonijn,程序(Java或其他语言)进行系统调用以从磁盘,url,内存或其他源获取字节。这完全取决于您想要如何查看字节;无论是映像、多个映像、某些自定义文件、线程转储还是其他任何内容。

此外,Java中还有对象,对象可以是任何东西的表示:字符序列、流、字节数组、临时缓冲区、远程文件等...-管他呢。例如,您知道某个文件是一个图像,因此您可以简单地将这些字节视为一个图像。例子

import java.awt.Image;
import java.io.File;
import java.io.IOException;

File image2 = new File("bishnu.jpg");
Image image = ImageIO.read(image2);

或者您知道某个< code>some.data文件是带有自定义扩展名的文本文件。所以同样的,因为你知道文件内容是什么,你可以直接读取它。

String content = new String(Files.readAllBytes(Paths.get("some.data")));

PDF也是如此。你所需要的只是添加库(它们可以用Java或其他语言编写;后者会要求一些黑客:python,C,甚至bash文件)。

再比如——excel文件。

Workbook workbook = WorkbookFactory.create(new File("yourfile.xlsx"));

请注意,如果您尝试从文件中读取字节,并且您假设它是一种类型,例如和图像,但您将其处理为另一种类型,例如excel,那么您将错误地读取数据,甚至出错。

卫华奥
2023-03-14

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

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

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

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

 类似资料:
  • 问题内容: 使用Javascript,我正在对WCF服务进行AJAX调用,并且正在返回字节数组。如何将其转换为图像并显示在网页上? 问题答案: 我意识到这是一个旧线程,但是我设法通过Web服务上的AJAX调用做到了这一点,并认为我愿意分享… 我的页面中已经有图像: AJAX: 我的“ GetItemPreview”代码查询一个SQL Server,其中我将图像存储为base64字符串,并将该字段作

  • 本文向大家介绍如何在Java中将PDF转换为字节数组?,包括了如何在Java中将PDF转换为字节数组?的使用技巧和注意事项,需要的朋友参考一下 您可以使用FileInputStream类的方法从PDF文件中读取数据,该方法需要字节数组作为参数。 示例 样本.pdf

  • 问题内容: 我想将PDF文档转换为图像。我正在使用Ghost4j。 问题: Ghost4J需要gsdll32.dll文件在运行时,我也 并不 想使用的DLL文件。 问题1: 在ghost4j中,有没有办法在没有dll的情况下转换图像? 问题2: 我在PDFBox API中找到了解决方案。convertToImage()将PDF页面转换为图像格式。 PDF文档上只有文本。运行此代码时出现该异常: 问

  • 我想把PDF文档转换成图像。我用的是Ghost4j。 问题:Ghost4J需要gsdll32。dll文件,我不想使用dll文件。 问题1:是否有任何方法,在ghost4j转换图像没有dll? 问题2:我在PDFBox API中找到了解决方案<代码>组织。阿帕奇。pdfbox。pdmodel。PDPagep具有将PDF页面转换为图像格式的方法convertToImage()。 我只有PDF文档上的文

  • 问题内容: 我读这篇文章了解如何将PDF转换为CMYK,但是当我试图接受的解决方案 如果我的原始pdf文件不包含图片,则不会获得具有CMYK颜色空间的pdf文件。如果在其中添加图片,我将得到正确的结果(已选中)。 例如,如果我用一个矩形创建一个svg,将其导出为pdf,然后使用ghostscript命令,则它在sRBG颜色空间中仍会得到一个pdf。但是,如果我在svg中添加图片,则效果很好。 解决

  • 我有一个非常具体的要求。我有一个java应用程序,在这里我必须将字节数组转换为具有int、String等java类型的消息。消息的结构在c中定义如下- 我在java应用程序中收到的是字节数组。我不知道c应用程序是否使用proto缓冲区或任何其他方式来转换为字节数组。但是,如果我逐个字节地解析数组,我可以得到值。例如- 这一行将返回正确的id值(结构中的第一个属性是int)。 我的问题是——如果我为