1. 解析zip文件读取文件流:

package test;

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.zip.ZipEntry;

import java.util.zip.ZipFile;

import java.util.zip.ZipInputStream;

public class aaaa {

public static void main(String[] args) throws Exception {

try {

readZipFile("D:\\ztree.zip");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void readZipFile(String file) throws Exception {

ZipFile zf = new ZipFile(file);

InputStream in = new BufferedInputStream(new FileInputStream(file));

ZipInputStream zin = new ZipInputStream(in);

ZipEntry ze;

while ((ze = zin.getNextEntry()) != null) {

if (ze.isDirectory()) {

} else {

System.err.println("file - " + ze.getName() + " : "

+ ze.getSize() + " bytes");

long size = ze.getSize();

if (size > 0) {

BufferedReader br = new BufferedReader(

new InputStreamReader(zf.getInputStream(ze)));

String line;

while ((line = br.readLine()) != null) {

System.out.println(line);

}

br.close();

}

System.out.println();

}

}

zin.closeEntry();

}

}

2、读取文件,压缩zip并下载;

//java自带的类库,实现zip压缩打包文件下载, 不支持中文文件名

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.util.Date;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class test {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("APPLICATION/OCTET-STREAM");

response.setHeader("Content-Disposition", "attachment; filename=" + this.getZipFilename());

System.out.println("in BatchDownload................");

ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());

File[] files = new File[2];

files[0] = new File("D:/OptiCM-POC/KDKK3Project/KDKK/images/1.jpg");

files[1] = new File("D:/OptiCM-POC/KDKK3Project/KDKK/images/2.jpg");

zipFile(files, "", zos);

zos.flush();

zos.close();

}

private void zipFile(File[] subs, String baseName, ZipOutputStream zos) throws IOException {

for (int i = 0; i < subs.length; i++) {

File f = subs[i];

zos.putNextEntry(new ZipEntry(baseName + f.getName()));

FileInputStream fis = new FileInputStream(f);

byte[] buffer = new byte[1024];

int r = 0;

while ((r = fis.read(buffer)) != -1) {

zos.write(buffer, 0, r);

}

fis.close();

}

}

private String getZipFilename() {

Date date = new Date();

String s = date.getTime() + ".zip";

return s;

}

}

3、java操作文件(压缩文件,导出zip,删除zip,写入文件,读取文件)

//压缩文件(防止中文乱码----使用apache的ZipOutputStream包)

private static void writeZip(String[] strs,String zipname,String temppath) throws IOException {

String[] files = strs;

OutputStream os = new BufferedOutputStream(new FileOutputStream(temppath+"//"+zipname));

ZipOutputStream zos = new ZipOutputStream(os);

byte[] buf = new byte[8192];

int len;

for (int i=0;i 0 ) {

zos.write( buf, 0, len );

}

zos.closeEntry();

bis.close();

}

zos.setEncoding("GBK");

for(int i=0;i 0 ) //切忌这后面不能加 分号 ”;“

{

os.write(buf, 0, len);//向客户端输出,实际是把数据存放在response中,然后web服务器再去response中读取

}

in.close();

os.close();

deleteZip(temppath);//导出后删除zip

/**

* 追加文件:使用FileWriter---写入

*/

public static void appendMethodB(String fileName, StringBuffer content) {

try {

//打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件

FileWriter writer = new FileWriter(fileName, true);

/*OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(fileName, true),"UTF-8");

osw.write(content);

osw.close();*/

writer.write(content.toString());

writer.close();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 功能:Java读取txt文件的内容

* 步骤:1:先获得文件句柄

* 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取

* 3:读取到输入流后,需要读取生成字节流

* 4:一行一行的输出。readline()。

* 备注:需要考虑的是异常情况

* @param filePath

*/

public static ArrayList readTxtFile(String filePath){

ArrayList readList = new ArrayList();

try {

String encoding="GBK";

File file=new File(filePath);

if(file.isFile() && file.exists()){ //判断文件是否存在

InputStreamReader read = new InputStreamReader(

new FileInputStream(file),encoding);//考虑到编码格式

BufferedReader bufferedReader = new BufferedReader(read);

String lineTxt = null;

while((lineTxt = bufferedReader.readLine()) != null){

readList.add(lineTxt);

}

read.close();

}else{

System.out.println("找不到指定的文件");

}

} catch (Exception e) {

System.out.println("读取文件内容出错");

e.printStackTrace();

}

return readList;

}

java直接读取rar,Java无需解压直接读取Zip文件和文件内容相关推荐

  1. Java 无需解压直接读取ZIP压缩包里的文件及内容

    最近开发的时候遇到要获取到zip压缩包里面的文件内容,一开始的想法是先通过代码执行解压,然后读取文件内容,但是感觉好麻烦,于是度了一下,发现可以无需解压直接读取,而且还是JDK提供给我们的工具. 解决 ...

  2. linux 解压所有以zip结尾的文件_Linux下的压缩zip,解压缩unzip命令详解及实例

    摘自:https://www.cnblogs.com/yves0923/p/10965021.html Linux下的压缩解压缩命令详解及实例 实例:压缩服务器上当前目录的内容为xxx.zip文件 z ...

  3. linux 解压所有以zip结尾的文件_在 Linux 上压缩文件:zip 命令的各种变体及用法...

    除了压缩和解压缩文件外,你还可以使用 zip 命令执行许多有趣的操作.这是一些其他的 zip 选项以及它们如何提供帮助. -- Sandra Henry-stocker(作者) 为了节省一些磁盘空间并 ...

  4. Java解压上传zip或rar文件,并解压遍历文件中的html的路径

    1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception {HttpSession session = request.getSes ...

  5. java实现 zip rar 7z 压缩包解压

    1.7z和rar需要引入maven依赖,zip使用java自带的 <!-- 7z解压依赖 --><dependency><groupId>org.apache.co ...

  6. java 压缩jar_Java基础之实现解压和压缩jar、zip、rar等源码分享

    有的时候在修改服务器项目中jar包配置时比较费事,相信开发过一定时间的码农们都遇到过类似的问题吧,需要重新打包再上传替换jar包,这样相对比较费事还有可能导致多人修改jar包导致不同步从而系统异常.下 ...

  7. Java Jar包的压缩、解压使用指南

    转载自 Java Jar包的压缩.解压使用指南 什么是jar包 JAR(Java Archive)是Java的归档文件,它是一种与平台无关的文件格式,它允许将许多文件组合成一个压缩文件. 如何打/解包 ...

  8. java解压两层zip文件_Java解压缩zip - 解压缩多个文件或文件夹实例

    java解压缩zip - 多个文件(包括文件夹),具体如下: 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压. 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参 ...

  9. 查看一个归档或压缩文件的内容而无需解压它

    查看一个归档或者压缩文件的内容而无需解压它 得益于 Linux 社区,有很多命令行工具可以来达成上面的目标.下面就让我们来看看使用它们的一些示例. 1.使用 vim 编辑器 vim 不只是一个编辑器, ...

最新文章

  1. 身份证丢失后被刷脸欠上万贷款,银行:人脸识别到就是你借的!
  2. 部署FTP服务器及其管理
  3. 解决Apache配置虚拟主机时出现403错误的问题
  4. 华为vrrp默认优先级_华为eNSP配置VRRP协议实验
  5. CodeBlocks的一些用法和常见的问题
  6. 剑指offer-3 从尾到头打印链表
  7. 【事件流】浅谈事件冒泡事件捕获------【巷子】
  8. c++中this指针基本概念和使用
  9. Python 文件操作中的读写模式:open(path, ‘-模式-‘,encoding=‘UTF-8‘)+python读写文件txt +文本数据预处理
  10. kibana 更新 索引模式_升级 Kibana - Kibana 中文文档
  11. Facebook 的应用机器学习平台
  12. 改开源项目的一些心得
  13. sql服务器显示error,SQL server 2008 登陆服务器时提示错误233
  14. (转)美国的套利已经变成一门生意,而不是一门技术了
  15. Kolmogorov–Smirnov test 柯尔莫哥洛夫-斯米尔诺夫检验
  16. win10 微信/QQ等能听到别人说话,别人听不到自己说话解决方案
  17. Chaos Mesh® 的 Chaos Engineering as a Service 探索之路
  18. 基于Android手机近距离感应器的俯卧撑计数器
  19. 两线怎么接三线插座图_三线插座怎么接两线
  20. 怎么安装苹果系统mac os x虚拟机

热门文章

  1. Replication的犄角旮旯(一)--变更订阅端表名的应用场景
  2. 图像处理之基础---特征向量的 几何意义
  3. 修改程序的形而上学思考(随笔)
  4. C语言——冒泡排序法
  5. 信息学奥赛一本通(2021:【例4.6】最大公约数)
  6. Lost Array(CF-1043B)
  7. 含k个3的数(信息学奥赛一本通-T1090)
  8. 三角形判断(信息学奥赛一本通-T1054)
  9. 信息奥赛一本通的递推练习
  10. python中main方法的用法_python __main__和__init__正确用法