首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在java中读取或解析MHTML(.mht)文件

在Java中读取或解析MHTML(.mht)文件,可以使用以下方法:

  1. 使用JavaMail API

JavaMail API是一个用于处理电子邮件的Java库,可以用于读取和解析MHTML文件。首先,需要将JavaMail API添加到项目中。如果使用Maven,可以在pom.xml文件中添加以下依赖:

代码语言:xml<dependency>
复制
   <groupId>javax.mail</groupId>
   <artifactId>javax.mail-api</artifactId>
   <version>1.6.2</version>
</dependency>

然后,可以使用JavaMail API中的MimeMessage类来读取和解析MHTML文件:

代码语言:java
复制
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class MHTMLReader {
    public static void main(String[] args) {
        try {
            File mhtmlFile = new File("example.mht");
            InputStream inputStream = new FileInputStream(mhtmlFile);
            MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()), inputStream);
            // 解析MimeMessage对象,获取所需信息
            // ...
        } catch (MessagingException | IOException e) {
            e.printStackTrace();
        }
    }
}
  1. 使用第三方库

另一个可以用于读取和解析MHTML文件的第三方库是Mime4j。首先,需要将Mime4j添加到项目中。如果使用Maven,可以在pom.xml文件中添加以下依赖:

代码语言:xml<dependency>
复制
   <groupId>org.apache.james</groupId>
   <artifactId>apache-mime4j</artifactId>
   <version>0.8.3</version>
</dependency>

然后,可以使用Mime4j中的MimeStreamParser类来读取和解析MHTML文件:

代码语言:java
复制
import org.apache.james.mime4j.MimeException;
import org.apache.james.mime4j.parser.AbstractContentHandler;
import org.apache.james.mime4j.parser.MimeStreamParser;
import org.apache.james.mime4j.stream.BodyDescriptor;
import org.apache.james.mime4j.stream.Field;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class MHTMLReader {
    public static void main(String[] args) {
        try {
            File mhtmlFile = new File("example.mht");
            InputStream inputStream = new FileInputStream(mhtmlFile);
            MimeStreamParser parser = new MimeStreamParser();
            parser.setContentHandler(new AbstractContentHandler() {
                @Override
                public void startMessage() throws MimeException {
                    // 开始解析MHTML文件
                }

                @Override
                public void endMessage() throws MimeException {
                    // 结束解析MHTML文件
                }

                @Override
                public void startHeader() throws MimeException {
                    // 开始解析邮件头
                }

                @Override
                public void field(Field field) throws MimeException {
                    // 处理邮件头字段
                }

                @Override
                public void endHeader() throws MimeException {
                    // 结束解析邮件头
                }

                @Override
                public void preamble(InputStream is) throws MimeException, IOException {
                    // 处理邮件正文前的预告内容
                }

                @Override
                public void epilogue(InputStream is) throws MimeException, IOException {
                    // 处理邮件正文后的结语内容
                }

                @Override
                public void body(BodyDescriptor bd, InputStream is) throws MimeException, IOException {
                    // 处理邮件正文
                }
            });
            parser.parse(inputStream);
        } catch (MimeException | IOException e) {
            e.printStackTrace();
        }
    }
}

这些方法可以帮助您在Java中读取和解析MHTML(.mht)文件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 何在 Java 读取处理超过内存大小的文件

    读取文件内容,然后进行处理,在Java我们通常利用 Files 类的方法,将可以文件内容加载到内存,并流顺利地进行处理。但是,在一些场景下,我们需要处理的文件可能比我们机器所拥有的内存要大。...但是,要包含在报告,服务必须在提供的每个日志文件至少有一个条目。简而言之,一项服务必须每天使用才有资格包含在报告。...使用所有文件的唯一服务名称创建字符串列表。 生成所有服务的统计信息列表,将文件的数据组织到结构化地图中。 筛选统计信息,获取排名前 10 的服务调用。 打印结果。...这里的关键特征是lines方法是惰性的,这意味着它不会立即读取整个文件;相反,它会在流被消耗时读取文件。 toLogLine 方法将每个字符串文件行转换为具有用于访问日志行信息的属性的对象。...处理文件行的主要过程比预期的要简单。它从与serviceName关联的compileMap检索(创建)Counter,然后调用Counter的add和setDay方法。

    21110

    MHT Viewer for Mac 永久版完美激活(MHTMLMIME HTML)文档查看器阅读器

    哪里下载MHT Viewer for Mac 永久版完美激活(MHTML/MIME HTML)文档查看器/阅读器资源啊,MHT Viewer for Mac是一款专门用于打开和查看MHTMHTML文件的软件...MHT文件是一种Web页面的存档文件格式,它包含了网页的所有内容,包括HTML、CSS、JavaScript和图片等。...由于MHT文件将所有内容都保存在一个文件,因此它具有易于传输、易于管理的特点,越来越受到人们的青睐。...例如,用户可以通过软件将MHT文件转换为PDF格式,方便在其他设备上查看;还可以通过软件将MHT文件的内容复制到剪贴板,方便进行粘贴和编辑等操作。...此外,MHT Viewer for Mac还支持打印和分享功能,用户可以将MHT文件打印出来分享给其他人。

    1.5K20

    .mht文件图片解析工具

    网上搜索了一下并没有找到相关的文件格式的说明 直接查看文件就可以发现文件格式并不是十分复杂,于是可以遍历来解析文件的图片 已经保存的图片如下: 在文件的存储结构如下: 虽然现在mht文件的资源链接已经全部都挂了...进行分隔,在文件的第一行已经定义了边界分隔字符串,通过这个值即可将所有的资源全部分隔出来 第一段 Content-Type: multipart/related; start=op.mhtml.1267442701515...inline; filename=89905.html Content-Type: text/html; charset=gbk; name=89905.html Content-ID: op.mhtml...所以mht文件的好处是一个文件记录了所有的内容,并且即使原始网络资源已经无法访问也可以正常的浏览 而我这里关注的则只有图片信息, 图片信息结构如下: ————pMKI1vNl6U7UKeGzbfNTyN...☆文章版权声明☆ * 网站名称:obaby@mars * 网址:https://h4ck.org.cn/ * 本文标题: 《.mht文件图片解析工具》 * 本文链接:https://h4ck.org.cn

    84740

    因Edge文件权限与IE发生冲突可导致XXE攻击

    关于该漏洞,研究人员专门发布了一个视频用于展示如何利用: 漏洞简介 当用户在打开使用Edge浏览器下载的特制MHT文件时,该漏洞便可启动。...由于此类文件MHTML Web Archives,即IE浏览器用于保存网页的默认格式,同时IE也是Windows系统打开这类文件的默认程序,因此不会被发现可疑内容。...Kolsek还发现,使用IE下载的MHT文件所具有的权限与Edge检索的权限不同,后者在访问控制列表额外添加了两个条目: S-1-15-3-3624051433-2125758914-1423191267...3624051433-2125758914-1423191267-1740899205-1073925389-3782572162-737981194:(OI)(CI)(R) 由图可见,Edge下载的文件会拒绝低完整性的进程进行对文件读取访问操作...目前来看,MOTW信息也存储在该数据流,但IE在尝试读取时会遇到错误,然后浏览器会忽略该错误,结果便是文件只能按照没有MOTW标志的相同处理方式,就像普通文件一样。

    57630

    mht文件图片解析工具(兼容ChromeBlink)

    之前写过一个mht文件解析工具,不过当时解析文件都是ie生成的。没有测试过chrome解析文件。...= MIME-Version: 1.0 其实文件的不同不止这两处,在chrome保存的文件图片信息可能以二进制形式的存在,而不是之前的base64的编码。...新的图片内容数据如下: ie保存的文件,图片内容如下: 由于之前的版本并没有兼容该编码方式,因而即使找到了合适的分隔符依然无法解析图片,由于文件内容包含二进制内容所以只能切换为二进制模式读取。...文件图片解析工具/ 完整代码请参考github: https://github.com/obaby/mht-image-extractor ☆文章版权声明☆ * 网站名称:obaby@mars...* 网址:https://h4ck.org.cn/ * 本文标题: 《mht文件图片解析工具(兼容Chrome/Blink)》 * 本文链接:https://h4ck.org.cn/2020/09/

    96230

    手写一个HTTP图片资源服务器,太容易了叭!

    还有商用版本的各式各样的http服务器,而再行业类各种微服务,各种web开发技术层出不穷,都是基于这些服务器上的架构上的使用,并没有从本质上提高服务器运行的效率,笔者在研究http服务的过程,就花了一早上来写了这样一个...http服务器用来干什么: 如下图所示,网络通过一个tomcat一样的http服务器来获取一台计算机上的资源。计算机上的资源可以是计算机能提供的任何服务(包括文件,存储,计算能力等等)。...tomcat可以通过一个servlet让开发人员进行处理。 …等等,实现一个http服务器绝对是一件很困难的事,所有网络应用层都是基于这个向上设计的。...四、Http服务器实现(Java) HttpServer类:具体的server实现,并且将解析方法也在该类下: import java.io.*; import java.net.ServerSocket...mht=message/rfc822 mhtml=message/rfc822 mi=application/x-mi mid=audio/mid midi=audio/mid mil=application

    51940

    EasyRecovery16数据恢复软件有哪些新功能?

    EasyRecovery数据恢复软件支持恢复不同存储介质数据:硬盘、光盘、U盘/移动硬盘、数码相机、RAID磁盘阵列数据恢复等,能恢复被删除丢失的包括文档、表格、图片、音视频、镜像等各种文件。...比如以下图片中,用户可以在设置通过勾选的方式仅选中需要恢复的文件类型,而不需要全盘扫描。 还有一个在设置可以进行自定义,且配合上述文件类型设定功能的选项。这个选项就是“筛选”。...而且由于是只读应用程序,EasyRecovery只会帮助用户进行数据恢复,并不会在扫描硬盘驱动器时在上面写数据,安全性可见一斑。...不管你丢失了什么文件,都可以恢复 1、文档 MDB、ACCDB、PDF、PS、CWK、FM3、FMT、WK1、WK3、WK4、Office、SDW、QXD、QXP、EPS、QBB、QBW、WPD、MHT...、MHTML、DBF、CAS、JSP、NBP、ASPX、PHP、ABD、QDF、QSD、RTF、TAX、HLP等 2、文件夹 不管是多大的文件夹,包含所有文件夹里面的内容,都可以帮助您轻松恢复 3、电子邮件

    40020

    科研小助手推荐第一期

    为了防止被和谐,请在公众号回复“冰点”“文库”即可获取该软件下载链接。 ?...(二)网页归档保存 —— mhtml格式文件 平时浏览网页时可能会遇到需要保存网页的情况,绝大部分浏览器支持网页保存是html格式,保存的文件除了html文件之外还会生成一个相对应的素材文件,这对于强迫症患者而言时无法接受的...鉴于此,经查阅资料发现将网页存储成mhtml文件即可完美解决这样的问题。...mhtml俗称网页归档,又称单一文件网页,是一种多用途互联网邮件扩展格式,能够将一个多附件网页(包含大量图片、Flash动画、Java小程序的网页)存储为单一文件,此单一文件即称为一网页封存文件,其扩展名为...步骤二:在Search flags输入MHTML,将disabled改成enabled即可完成设置。如下图: ?

    91420

    免费恢复磁盘的数据恢复软件EasyRecovery使用教程

    EasyRecovery是一款操作简单、功能强大数据恢复软件,通过easyrecovery可以从硬盘、光盘、U盘、数码相机、手机等各种设备恢复被删除丢失的文件、图片、音频、视频等数据文件。...快速扫描已删除的文件对更难恢复的文件执行更深入的扫描 资源猫网小编在浏览该网站时,页面整洁美观,感兴趣的用户,欢迎下载,实际体验!...、MHTMHTML、DBF、CAS、JSP、NBP、ASPX、PHP、ABD、QDF、QSD、RTF、TAX、HLP等2、文件夹:文件夹数据,以及包含在文件夹里面的内容,我们可以帮助您轻松恢复3、电子邮件...3、操作失误,用户在磁盘写入数据时,可能会出现误删等失误操作,它也会导致磁盘的数据丢失。...图2:选择磁盘3、在等待一段时间之后,软件会在下面的界面显示支持恢复的d盘数据,我们选择需要恢复的数据,然后点击恢复按钮,软件会将数据恢复到d盘,磁盘的数据恢复工作就完成了。

    3K00

    科研小助手推荐第八期 —— 如此简单地资料保存!

    平时浏览网页时可能会遇到需要保存网页的情况,绝大部分浏览器支持网页保存是html格式,保存的文件除了html文件之外还会生成一个相对应的素材文件,这对于强迫症患者而言时无法接受的,干嘛就不能直接保存成一个文件呢...鉴于此,经查阅资料发现将网页存储成mhtml文件即可完美解决这样的问题。...mhtml俗称网页归档,又称单一文件网页,是一种多用途互联网邮件扩展格式,能够将一个多附件网页(包含大量图片、Flash动画、Java小程序的网页)存储为单一文件,此单一文件即称为一网页封存文件,其扩展名为...步骤一:打开使用谷歌内核浏览器,360浏览器,在地址栏输入:chrome://flags/ ,然后按下Enter键,结果如下图所示: 步骤二:在Search flags输入MHTML,将disabled...也感谢大家对matlab爱好的关爱和支持 封面图片:由 geralt 在Pixabay上发布 如需转载,请在公众号回复“转载”获取授权,未经授权擅自搬运抄袭的,必将追究其责任!

    41630

    ——XSS 入门介绍

    跨站脚本攻击是一种常见的web安全漏洞,它主要是指攻击者可以再在面插入恶意脚本代码,当受害者访问这些页面时,浏览器会解析并执行这些恶意代码,从而达到窃取用户身份/钓鱼/传播恶意代码等行为。 ?...VBScript XSS 其中UTF-7、MHTML XSS、CSS XSS、VBScript XSS 只在低版本的IE可以生效,现在应该基本不可见了,不过还是给大家介绍下。...MHTML XSS MHTML XSS 同样只存在于低版本的IEMHTML是MIME HTML (Multipurpose Internet Mail Extension HTML,聚合超文本标记语言...)的缩写,把一个多附件(如图片,flash动画等)的网页内容都保存到单一档案的标准,是类似HTTP的协议,在IE,当嵌入资源的URL的协议为MHTML 时,IE将调用MHTML Protocol Handler...,把该资源当作MHTML格式文件解析处理。

    1K31

    跨站的艺术-XSS入门与介绍

    跨站脚本攻击是一种常见的web安全漏洞,它主要是指攻击者可以在页面插入恶意脚本代码,当受害者访问这些页面时,浏览器会解析并执行这些恶意代码,从而达到窃取用户身份/钓鱼/传播恶意代码等行为。 ?...VBScript XSS 其中UTF-7、MHTML XSS、CSS XSS、VBScript XSS 只在低版本的IE可以生效,现在应该基本不可见了,不过还是给大家介绍下。...MHTML XSS MHTML XSS 同样只存在于低版本的IEMHTML是MIME HTML (Multipurpose Internet Mail Extension HTML,聚合超文本标记语言...)的缩写,把一个多附件(如图片,flash动画等)的网页内容都保存到单一档案的标准,是类似HTTP的协议,在IE,当嵌入资源的URL的协议为MHTML 时,IE将调用MHTML Protocol Handler...,把该资源当作MHTML格式文件解析处理。

    1.1K70

    HTTP content-type

    Content-Type(内容类型),一般是指网页存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 PHP 网页点击的结果却是下载一个文件一张图片的原因...) application/x-www-form-urlencoded : 默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式...) 另外一种常见的媒体格式是上传文件之时使用的: multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式 ---- HTTP content-type 对照表 文件扩展名....math text/xml .mdb application/msaccess .mdb application/x-mdb .mfp application/x-shockwave-flash .mht...message/rfc822 .mhtml message/rfc822 .mi application/x-mi .mid audio/mid .midi audio/mid .mil application

    61020

    使用自定义注解,设置发送到客户端的响应的内容类型

    注解的生命周期有三个阶段:1、Java文件阶段;2、编译到class文件阶段;3、运行期阶段。...* (注解将被编译器记录在class文件,但在运行时不会被虚拟机保留,这是一个默认的行为) */ CLASS, /** * Annotations are...* (注解将被编译器记录在class文件,而且在运行时会被虚拟机保留,因此它们能通过反射被读取到) * @see java.lang.reflect.AnnotatedElement...给出的内容类型可以包括字符编码说明 例 :text/html;charset=UTF-8....在使用http协议的情况,该方法设 置 Content-type实体报头 一般在Servlet,习惯性的会首先设置请求以及响应的内容类型以及编码方式: response.setContentType

    2.1K20
    领券