text文件压缩包解析与下载
//压缩包下载
private StreamedContent newsTemplate;
//该方法是对压缩包进行下载
public StreamedContent getNewsTemplate() {
//对多个Text文件进行压缩
ZipFiles(files,file);
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream(FaceContextUtil.getCurtExternalContext().getRealPath("") +
"/resources/pack/appData.zip");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
newsTemplate = new DefaultStreamedContent(inputStream, "", "appData.zip");
return newsTemplate;
}
//压缩多个文件
public static void ZipFiles(java.io.File[] srcfile, java.io.File zipfile) {
byte[] buf = new byte[1024];
try {
//创建zip压缩包输出流
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));
// 压缩文件
for (int i = 0; i < srcfile.length; i++) {
//读取数组中的文件
FileInputStream in = new FileInputStream(srcfile[i]);
// 将该文件名添加到zip输出
out.putNextEntry(new ZipEntry(srcfile[i].getName()));
// Transfer bytes from the file to the ZIP file
//传送字节到zip包的文件中
int len;
while ( (len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
// Complete the entry
//完成第一个文件的传入
out.closeEntry();
in.close();
}
// Complete the ZIP file
//完成压缩,关闭输出流
out.close();
System.out.println("压缩完成.");
}
catch (IOException e) {
e.printStackTrace();
}
}
对zip包进行解压
Enumeration /nju:mê'rei shên/列举 计算 项目
public static void unZipFiles(File zipfile,String descDir){
try {
ZipFile zf=new ZipFile(zipfile);
//Enumeration接口的对象,他生成一系列元素,一次生成一个, 连续调用nextElement方法返回一系列连续元素
//zf为所有元素,entries为Enumeration的一个元素,ertries.hasMoreElements为是否还存在下一个元素
for(Enumeration entries=zf.entries();entries.hasMoreElements();){
ZipEntry entry=(ZipEntry) entries.nextElement();
String zipEntryName=entry.getName();
InputStream in=zf.getInputStream(entry);
OutputStream out=new FileOutputStream(descDir+zipEntryName);
byte[] buf1=new byte[1024];
int len;
while((len=in.read(buf1))>0){
out.write(buf1,0,len);
}
in.close();
out.close();
System.out.println("解压缩完成.");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
不解压,直接读取压缩包文件 ,根据json转换,加入集合
public String readZipFile(String file) throws Exception {
list = new ArrayList<RltVip>();
list2 = new ArrayList<RltStaR>();
list3 = new ArrayList<RltAppDev>();
//创建Zip压缩文件
ZipFile zipFile = null;
//创建Zip流
ZipInputStream zin = null;
InputStream in = null;
StringBuffer sbf = null;
try {
zipFile = new ZipFile(file);
in = new BufferedInputStream(new FileInputStream(file));
zin = new ZipInputStream(in);
ZipEntry ze;
sbf = new StringBuffer();
while ((ze = zin.getNextEntry()) != null) {
Object lh = (Object) ze;
String rv = String.valueOf(lh);
if (ze.isDirectory()) {
return null;
} else {
if (rv.equals("ResultVip.txt")) {
StringBuffer sBuffer = new StringBuffer();
// 这里的判断不能用ze.getSize() > 0, 当文件的大小很小时,会返回-1
if (ze.getSize() != 0) {
BufferedReader br = new BufferedReader(
new InputStreamReader(
zipFile.getInputStream(ze), Charset.forName("utf-8")));
String line;
while ((line = br.readLine()) != null) {
sBuffer.append(line + "\r\n");
try {
RltVip vip = JsonHelper.CRAZY_GSON.fromJson(line, RltVip.class);
list.add(vip);
} catch (Exception e) {
rltVipIndex++;
continue;
}
}
sbf.append(sBuffer);
br.close();
}
} else if (rv.equals("ResultStatistic.txt")) {
StringBuffer sBuffer = new StringBuffer();
// 这里的判断不能用ze.getSize() > 0, 当文件的大小很小时,会返回-1
if (ze.getSize() != 0) {
BufferedReader br = new BufferedReader(
new InputStreamReader(
zipFile.getInputStream(ze)));
String line;
while ((line = br.readLine()) != null) {
sBuffer.append(line + "\r\n");
try {
RltStaR rltStaR1 = JsonHelper.CRAZY_GSON.fromJson(line, RltStaR.class);
System.out.printf(rltStaR1.toString());
list2.add(rltStaR1);
} catch (Exception e) {
rltStatIndex++;
continue;
}
}
sbf.append(sBuffer);
br.close();
}
} else if (rv.equals("ResultDevice.txt")) {
StringBuffer sBuffer = new StringBuffer();
// 这里的判断不能用ze.getSize() > 0, 当文件的大小很小时,会返回-1
if (ze.getSize() != 0) {
BufferedReader br = new BufferedReader(
new InputStreamReader(
zipFile.getInputStream(ze)));
String line;
while ((line = br.readLine()) != null) {
sBuffer.append(line + "\r\n");
try {
RltAppDev rlt = JsonHelper.CRAZY_GSON.fromJson(line, RltAppDev.class);
list3.add(rlt);
} catch (Exception e) {
rltDevsIndex++;
continue;
}
}
sbf.append(sBuffer);
br.close();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
if (zin != null) {
zin.close();
}
if (zipFile != null) {
zipFile.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return sbf.toString();
}
- .zip/.rar打包与解压
Linux下如何解压.zip和.rar文件,对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们: 1)对于zip linux下提供了zip和unzip程序,zip是 ...
- [Java] Java 打包成jar包 和 解压jar包
解压jar包 jar xf xxx.jar 打包成jar包 方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] ...
- Lua学习教程之 可变參数数据打包与解包
利用table的pack与unpack进行数据打包与解包.測试代码例如以下: print("Test table.pack()----------------"); functio ...
- java zip 批量打包(java.util包和apache.tools包)
/** * 文件批量打包 * @param zipPath 打包路径 * @param files 批量文件 */ public void zipOut(String zipPath,File[] f ...
- lambda表达式,filter,map,reduce,curry,打包与解包和
当然是函数式那一套黑魔法啦,且听我细细道来. lambda表达式 也就是匿名函数. 用法:lambda 参数列表 : 返回值 例: +1函数 f=lambda x:x+1 max函数(条件语句的写法如 ...
- MPI 打包与解包函数 MPI_Pack(),MPI_Unpack()
▶ MPI 中与数据打包传输有关的几个函数 ● 函数 MPI_Pack() 与 MPI_Unpack() 的原型 MPI_METHOD MPI_Pack( _In_opt_ const void* i ...
- CentOS7 tar打包工具 打包,解包,打包压缩,打包解压缩
tar命令 選項與參數: -c :建立打包檔案,可搭配 -v 來察看過程中被打包的檔名(filename) -t :察看打包檔案的內容含有哪些檔名,重點在察看『檔名』就是了: -x :解打包或解壓縮的 ...
- struct:二进制数据结构的打包与解包
介绍 struct模块包括一些函数,这些函数可以完成字节串与原生Python数据类型(如数字和字符串)之间的转换 函数与Struct类 struct提供了一组处理结构值的模块级函数,另外还有一个Str ...
- Unix系统解压tar包时出现@LongLink错误
Unix系统上使用tar命令解压tar包后,多了一个@LongLink的文件,并且原来的tar包解压后不完整.网上查了下,原因是AIX系统上tar命令自身的一个缺陷.解决办法:把该tar包上传到lin ...
随机推荐
- php解压 tar.gz 格式文件
1.运用php自带压缩与归档扩展(phar) $phar = new PharData('song.tar.gz'); //路径 要解压的文件 是否覆盖 $phar->extractTo('c: ...
- 文件下载(只需要简单的四步),Java中都通用
我们就直接切入主题啦,文件下载只需要四步: 1.设置文件ContentType类型 2.设置文件头 3.通过response获取ServletOutputStream对象(out) 4.写到输出流(o ...
- Liferay 6开发学习(二十六):数据库连接相关问题
Liferay中怎么更换数据库? 常碰到有人问Liferay怎么更换数据库,怎么修改数据库连接.在我们第一次启动Liferay的时候,会有一个配置向导,在此配置向导我们可以选择数据库,并配置数据库连接 ...
- C#命名空间“Microsoft.Office”中不存在类型或命名空间名称的终极解决方法
源地址:http://blog.csdn.net/zhu2695/article/details/41852267
- [Flex] ButtonBar系列——皮肤和外观设置
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- Address already in use: JVM_Bind<null>:8080错误的解决办法
myEclipse在启动tomcat时,有时候会出现8080端口被占用的情况, 提示这个错误:Address already in use: JVM_Bind<null>:8080. 按照 ...
- Angularjs路由.让人激动的技术.真给前端长脸了.
先看文件的摆放 不废话,直接上代码. detail.html: <hr/> <h3>路由 <span style="color: red;">{ ...
- How to get the date N days ago in Python
from datetime import datetime, timedelta N = 2 date_N_days_ago = datetime.now() - timedelta(days=N) ...
- NYOJ 51-管闲事的小明
点击打开链接 管闲事的小明 时间限制:4000 ms | 内存限制:65535 KB 难度:2 描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数 ...
- 《Code Complete》ch.21 协同构建
WHAT? 所有的协同构建技术都试图通过这样那样的途径,将展示工作的过程正式化,以便将错误暴露出来 WHY? 提高缺陷检出率,从而缩短开发周期,降低开发成本 发现不明显的错误信息,如不恰当的注释.硬编 ...