java压缩文件读取_用Java读取/写入压缩和非压缩文件

java压缩文件读取

这篇文章的主要原因是尝试不要重复自己( DRY ),因为通常,我会遇到递归的需求,即读写压缩的和非压缩的文件(主要是JSON和CSV)。

首先让我们看看如何读取文本文件。 注意我正在使用(相对较小的)文本文件,因此:

  1. read方法返回一个包含全部内容的String。
  2. 我正在使用BufferedReader逐行读取。
private String readFile(String fileName) {StringBuilder sb = new StringBuilder();try {BufferedReader input = new BufferedReader(new FileReader(new File(fileName)));try {String line = null;while ((line = input.readLine()) != null) {sb.append(line);}} finally {input.close();}} catch (IOException ex) {// Handle exceptionreturn null;}return sb.toString();
}

注意:做事的方法不只一种。 在条目读取文本文件的最佳方法中 ,您可以找到许多不同的方法来读取文本文件,具体取决于您的JDK版本和文件大小。

类似于将String写入文件:

private void writeFile(String fileName, String value) {try {FileWriter fw = new FileWriter(fileName);BufferedWriter bw = new BufferedWriter(fw);bw.write(value);bw.close();} catch (IOException ex) {// Handle exception}
}

要读取/写入带有二进制数据的压缩文件,我们需要使用流和缓冲区。 因此,要读取GZIP压缩文件并获取字符串:

private String readCompressedFile(String fileName) {try {GZIPInputStream gis = new GZIPInputStream(new FileInputStream(fileName));ByteArrayOutputStream fos = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len;while ((len = gis.read(buffer)) != -1) {fos.write(buffer, 0, len);}fos.close();gis.close();return new String(fos.toByteArray());} catch (IOException ex) {// Handle exceptionreturn null;}
}

并类似地将字符串写入GZip压缩文件:

private void writeCompressedFile(String fileName, String value) {try {InputStream is = new ByteArrayInputStream(value.getBytes());GZIPOutputStream gzipOS = new GZIPOutputStream(new FileOutputStream(fileName));byte[] buffer = new byte[1024];int len;while ((len = is.read(buffer)) != -1) {gzipOS.write(buffer, 0, len);}gzipOS.close();is.close();} catch (IOException ex) {// Handle exception}
}

资源资源

接下来,您可以找到用于各种JDK版本的Java代码的两个重要链接:

  • 读写文本文件
  • 读写二进制文件

翻译自: https://www.javacodegeeks.com/2015/01/readingwriting-compressed-and-not-compressed-files-in-java.html

java压缩文件读取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue router 参数_Vue.js项目开发技术解析

Vue.js项目开发技术解析一、Vue.js实例在一个Vue.js工程中,用于显示内容最基层的实例称之为根实例。通过该实例可以进行页面或组件的更新和显示。对于项目本身而言,无论是什么样的页面,都要基于该根实例进行显示。1.1、何为构造器对于Vue.js项…

deepin nginx连接php,利用docker运行nginx加上本机的php-fpm。访问html文件正常,但是访问php文件就报错404...

最近在虚拟机弄了一个deepin系统。打算使用docker加载nginx/1.17.6加在官方下载的PHP7.4.1(这个是本地编译的)。出现了以下的问题:1)访问html文件正常,但是访问php文件报404。根据网上的文章尝试:1)php运行不成功。在PHP的cli模式下是正常的。…

C语言中面向对象编程

C语言中面相对象的编程面向对象的重要思想就是数据隐藏,在面向对象语言中,对象可以包含私有变量。这样我们可以说他们具有内部状态,这些内部状态对其他对象是透明的。全局变量可以通过设置变量作用域来模拟私有变量(甚至友元对象)…

jmeter测试客户端_如何在JMeter中执行客户端Web性能测试?

jmeter测试客户端在本文中,我们将看到如何使用Jmeter插件进行客户端性能测试。 我将使用jmeter webdriver插件。 在开始本主题之前,请阅读我以前的文章中有关客户端性能测试的一些基本信息。 因此,让我们开始吧: 安装 通过这篇文…

java编译程序的基本命令是什么,【填空题】Java中编译java 程序的命令是 1 ,执行java程序的命令是 java 。...

【填空题】Java中编译java 程序的命令是 1 ,执行java程序的命令是 java 。更多相关问题[多选] 下列骨折中属于关节外骨折的是()。[多选] 骨折早期局部的并发症包括()。[多选] 典型中1/3段锁骨骨折的内侧端移位方向是()。[多选] 骨关节结核的诊断要点包括()。[多选] 骨痂形成的方…

python range 小数_python中如何表示一个无限循环小数?(不用分数的形式)python,使用range语...

python中如何表示一个无限循环小数?(不用分数的形式) python,使用range语www.zhiqu.org 时间: 2020-12-07只能用分数或者你自己设计一个对象,保留指定长度的有效位range()只能产生int无法产生float但是可以曲线救国for i in range(0,10,1…

C语言实现面向接口编程

面向接口编程话不多说,先上一个面向接口编程的Demo:参考demo:1#include 2#include 34/********************************************5 * Note: 共用接口的定义 6 * author:bug菌 7 *******************************************/8struct Interface {9 …

java ee用户登录_EE Servlet 3:使用会话和过滤器开发用户登录

java ee用户登录我在上一篇文章中介绍了Application类,您可以在其中设置后端服务。 我添加的一个示例服务是UserService 。 该服务将加载包含用户名和密码集的Java用户属性文件; 稍后将用于对用户进行身份验证以登录到Web应用程序。 现在,我将…

php 静态方法 call,php的 __callStatic 函数

现在很多框架中调用方法都是Foo::bar()这种格式的,但是他们真的是静态方法吗?这种情况在 larave 中尤其常见,但是开发过程中很明显这些有一部分不是静态的,比如你使用一个模型User,那么你每次实例化出来他都是一个全新的,互不影响,这里就用到了一个魔术方法__callStatic举个栗…

python高手之路第三版_《Python高手之路(第3版)》——1.3 版本编号-阿里云开发者社区...

本节书摘来自异步社区《Python高手之路(第3版)》一书中的第1章,第1.3节,作者[法]Julien Danjou,王飞龙 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。1.3 版本编号可能你已经有所了解&#xf…

「C语言」指针数组 数组指针 指针函数 函数指针

相信很多人和我一样,有着这样的恐惧,那就是这四个玩意怎么也分不清,这都是啥啥啥啥呢?今天我们来具体分析一下。其实要具体了解这四个概念,只需要了解符号优先级,并关注最后两字,你就成功了一半…

spring 组件扫描_避免不必要的Spring配置组件扫描

spring 组件扫描我在堆栈溢出中遇到了一个有趣的问题。 Brett Ryan有问题,Spring Security配置被初始化了两次。 当我查看他的代码时,我发现了问题所在。 让我展示显示代码。 他有相当标准的Spring应用程序(不使用Spring Boot)。…

php滚动到指定位置,JQuery插件:ScrollTo平滑滚动到页面指定位置

ScrollTo是一款基于jQuery的滚动插件,当点击页面的链接时,可以平滑地滚动到页面指定的位置。适用在一些页面内容比较多,页面长度有好几屏的场合,本文以DEMO为示例讲解该插件的应用。查看演示DEMO使用方法1-准备jQuery库…

聚集索引和非聚集索引的区别_武汉无疫情小区居民可在小区内非聚集性个人活动...

3月18日,武汉市新冠肺炎疫情防控指挥部社区疫情防控组发布《关于无疫情小区、村(队)调整管控措施的意见》(下简称《意见》)指出,全市认定的无疫情小区、村(队)可对管控措施作有序调整。 被认定为无疫情小区的,允许居民分批、分时段、分楼栋&a…

C语言 | 指向指针的指针排序

C语言实现用指向指针的指针的方法对5个字符串排序并输出。 解题思路:读者看着道题的时候,首先要知道什么时指针,指向指针的指针应该怎么用,一般在开发中不这样用,读者要看明白,这个很锻炼思维的。C语言源代…

jooq sql_使用jOOQ和JavaFX将SQL数据转换为图表

jooq sql最近,我们已经展示了Java 8和函数式编程将如何为使用jOOQ和Java 8 lambda和Streams进行SQL数据的函数数据转换为Java开发人员带来新的视角。 今天,我们将这一步骤更进一步,将数据转换为JavaFX XYChart.Series以根据数据生成美观的条形…

python 接收邮件服务器地址_Python 用IMAP接收邮件

一、简介IMAP(Internet Message Access Protocol),这个协议与POP一样,也是从邮件服务器上下载邮件到本机,不过IMAP比POP的功能要更加强大些,IMAP除支持POP所有功能外,还支持以下功能:多个邮件文件夹(收件箱…

流媒体服务器 php,nginx 流媒体服务器 FFmpeg 截图

预备:yum install -y automake autoconf libtool gcc gcc-c1.安装phpyum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-devel php-fpm2.安装 nginxyum –y install nginx nginx-devel3.安装FFmpeg安装 Install ffmpeg 等模块yum -y install ffmpe…

C语言应用笔记:C语言typedef关键字及其使用

C 语言允许用户使用 typedef 关键字来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等。一旦用户在程序中定义了自己的数据类型名称,就可以在该程序中用自己的…

java不支持发行版本12_主要发行版本后Java开发人员应使用的15种工具

java不支持发行版本12新部署的生存工具包:适用于Java开发人员的工具,这些工具经常将代码部署到生产中! Takipi会检测生产中的所有错误,并像发生错误时一样显示变量值 立即部署并获得免费的T恤 新部署的终极生存套件 与在僵尸末…