java直接读取rar,Java无需解压直接读取Zip文件和文件内容
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文件和文件内容相关推荐
- Java 无需解压直接读取ZIP压缩包里的文件及内容
最近开发的时候遇到要获取到zip压缩包里面的文件内容,一开始的想法是先通过代码执行解压,然后读取文件内容,但是感觉好麻烦,于是度了一下,发现可以无需解压直接读取,而且还是JDK提供给我们的工具. 解决 ...
- linux 解压所有以zip结尾的文件_Linux下的压缩zip,解压缩unzip命令详解及实例
摘自:https://www.cnblogs.com/yves0923/p/10965021.html Linux下的压缩解压缩命令详解及实例 实例:压缩服务器上当前目录的内容为xxx.zip文件 z ...
- linux 解压所有以zip结尾的文件_在 Linux 上压缩文件:zip 命令的各种变体及用法...
除了压缩和解压缩文件外,你还可以使用 zip 命令执行许多有趣的操作.这是一些其他的 zip 选项以及它们如何提供帮助. -- Sandra Henry-stocker(作者) 为了节省一些磁盘空间并 ...
- Java解压上传zip或rar文件,并解压遍历文件中的html的路径
1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception {HttpSession session = request.getSes ...
- java实现 zip rar 7z 压缩包解压
1.7z和rar需要引入maven依赖,zip使用java自带的 <!-- 7z解压依赖 --><dependency><groupId>org.apache.co ...
- java 压缩jar_Java基础之实现解压和压缩jar、zip、rar等源码分享
有的时候在修改服务器项目中jar包配置时比较费事,相信开发过一定时间的码农们都遇到过类似的问题吧,需要重新打包再上传替换jar包,这样相对比较费事还有可能导致多人修改jar包导致不同步从而系统异常.下 ...
- Java Jar包的压缩、解压使用指南
转载自 Java Jar包的压缩.解压使用指南 什么是jar包 JAR(Java Archive)是Java的归档文件,它是一种与平台无关的文件格式,它允许将许多文件组合成一个压缩文件. 如何打/解包 ...
- java解压两层zip文件_Java解压缩zip - 解压缩多个文件或文件夹实例
java解压缩zip - 多个文件(包括文件夹),具体如下: 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压. 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参 ...
- 查看一个归档或压缩文件的内容而无需解压它
查看一个归档或者压缩文件的内容而无需解压它 得益于 Linux 社区,有很多命令行工具可以来达成上面的目标.下面就让我们来看看使用它们的一些示例. 1.使用 vim 编辑器 vim 不只是一个编辑器, ...
最新文章
- 身份证丢失后被刷脸欠上万贷款,银行:人脸识别到就是你借的!
- 部署FTP服务器及其管理
- 解决Apache配置虚拟主机时出现403错误的问题
- 华为vrrp默认优先级_华为eNSP配置VRRP协议实验
- CodeBlocks的一些用法和常见的问题
- 剑指offer-3 从尾到头打印链表
- 【事件流】浅谈事件冒泡事件捕获------【巷子】
- c++中this指针基本概念和使用
- Python 文件操作中的读写模式:open(path, ‘-模式-‘,encoding=‘UTF-8‘)+python读写文件txt +文本数据预处理
- kibana 更新 索引模式_升级 Kibana - Kibana 中文文档
- Facebook 的应用机器学习平台
- 改开源项目的一些心得
- sql服务器显示error,SQL server 2008 登陆服务器时提示错误233
- (转)美国的套利已经变成一门生意,而不是一门技术了
- Kolmogorov–Smirnov test 柯尔莫哥洛夫-斯米尔诺夫检验
- win10 微信/QQ等能听到别人说话,别人听不到自己说话解决方案
- Chaos Mesh® 的 Chaos Engineering as a Service 探索之路
- 基于Android手机近距离感应器的俯卧撑计数器
- 两线怎么接三线插座图_三线插座怎么接两线
- 怎么安装苹果系统mac os x虚拟机
热门文章
- Replication的犄角旮旯(一)--变更订阅端表名的应用场景
- 图像处理之基础---特征向量的 几何意义
- 修改程序的形而上学思考(随笔)
- C语言——冒泡排序法
- 信息学奥赛一本通(2021:【例4.6】最大公约数)
- Lost Array(CF-1043B)
- 含k个3的数(信息学奥赛一本通-T1090)
- 三角形判断(信息学奥赛一本通-T1054)
- 信息奥赛一本通的递推练习
- python中main方法的用法_python __main__和__init__正确用法