Java读取压缩文件信息
不解压压缩文件,获取其中包含的文件,通过文件名检查是否包含非法文件。(后续再根据文件头或内容吧)
zip:
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile; private static void readZip(String fileName) {
ZipFile zf = null;
try {
zf = new ZipFile(fileName);
HashSet<ZipEntry> set = new HashSet<ZipEntry>();
int fileCount = 0;
int dirCount = 0;
for (Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>) zf.entries(); entries.hasMoreElements();) {
ZipEntry ze = entries.nextElement();
if (ze.isDirectory()) {
dirCount++;
} else {
fileCount++;
String name = ze.getName();
for (String s : illegalString) {
if (name.toUpperCase().contains(s)) {
set.add(ze);
break;
}
}
}
}
System.out.println("The package contains " + fileCount + " files and " + dirCount + " directories.\n");
if (set.size() <= 0) {
System.out.println("PASS: ILLEGAL FILE NOT FOUND.");
} else {
System.out.println("Possible illegal files: \n");
int index = 1;
System.out.format(" %-10s%-80s%-20s %n%n", "NO.", "FileName", "Bytes");
for (ZipEntry e : set) {
System.out.format(" %-10s%-80s%-20s %n%n", index, e.getName(), e.getSize());
index++;
}
}
} catch (ZipException e) {
System.out.println("INFO: The file format is not a common zip.");
} catch (IOException e) {
System.out.println("WARNING: IOException occured.");
} catch (SecurityException e) {
System.out.println("WARNING: The file is not accessible.");
} catch (NullPointerException e) {
System.out.println("WARNING: NullPointerException. May due to ZipEntry has no Size.");
} finally {
if (zf != null) {
try {
zf.close();
} catch (IOException e) {
System.out.println("WARNING: IOException occured when close file.");
}
}
}
}
tar:
import org.apache.tools.tar.TarEntry;
import org.apache.tools.tar.TarInputStream; private static HashSet<String> readTar(String fileName) {
TarInputStream tis = null;
HashSet<String> set = null;
try {
tis = new TarInputStream(new FileInputStream(fileName));
int dirCount = 0, fileCount = 0;
set = new HashSet<String>();
TarEntry te = tis.getNextEntry();
while (te != null) {
if (!te.isDirectory()) {
String name = te.getName();
for (String s : illegalString) {
if (name.toUpperCase().contains(s)) {
set.add(name);
break;
}
}
fileCount++;
} else {
dirCount++;
}
te = tis.getNextEntry();
}
System.out.println("INFO: The package contains " + dirCount + " and " + fileCount + " files.");
return set;
} catch (FileNotFoundException e) {
System.out.println("INFO: File not exist.");
} catch (IOException e) {
System.out.println("WARNING: IOException occured in TarInputStream.");
} finally {
if (tis != null) {
try {
tis.close();
} catch (IOException e) {
System.out.println("WARNING: IOException occured when close file.");
}
}
}
return set;
}
Java读取压缩文件信息的更多相关文章
- Java读取txt文件信息并操作。
一.java读取txt文件内容 import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.Fi ...
- java读取properties 文件信息
src下config/tank.properties文件 initTankCount=10 ReinitTankCount=8 Etmspeed=15 Mtmspeed=15 MTankCount ...
- Java学习笔记之I/O流(读取压缩文件以及压缩文件)
1.读取压缩文件:ZipInputStream 借助ZipFile类的getInputStream方法得到压缩文件的指定项的内容,然后传递给InputStreamReader类的构造方法,返回给Buf ...
- JAVA读取XML文件并解析获取元素、属性值、子元素信息
JAVA读取XML文件并解析获取元素.属性值.子元素信息 关键字 XML读取 InputStream DocumentBuilderFactory Element Node 前言 最 ...
- java读取properties配置文件信息
一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...
- java 读取XML文件作为配置文件
首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...
- java ZIP压缩文件
问题描述: 使用java ZIP压缩文件和目录 问题解决: (1)单个文件压缩 注: 以上是实现单个文件写入压缩包的代码,注意其中主要是在ZipOutStream流对象中创建Z ...
- java 读取TXT文件的方法
java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
- java读取TXT文件的方法
java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
随机推荐
- Nexus-vPC和STP BPDU
1.为了交互vPC拓扑,STP机制被修改适应到vPC peer环境.2.对于vPC ports,只有主角色运行STP,换句话说,vPC下的STP由主角色设备控制.3.只有主角色设备在DP(指定端口)上 ...
- idea中scala项目补全变量、添加打印语句的小技巧
1. 自动补全变量: new Person.var ,然后按回车键:效果:代码变成: val person: Person = new Person 2.添加打印语句: person.name.pr ...
- FTP文件传输服务!
一.FTP 连接及传输模式 1.控制连接:TCP 21,用于发送 FTP 命令信息2.数据连接:TCP 20,用于上传.下载数据3.数据连接的建立类型: (1)主动模式:服务器主动发起数据连接 (2 ...
- 记处理spring-devtools 和 通用mapper 使用问题
问题: tk.mybatis.mapper.MapperException: 无法获取实体类com.*.* 对应的表名 环境: springboot 2.0.6, 通用mapper 2.0.4,还有 ...
- 看Web视频整理标签笔记
原来观看web视频,初学html的时候发现记忆不太深刻,所以自己整理了一些笔记,加深记忆且方便忘记时查看.html的规范(遵循)1.一个html文件开始标签和结束标签<html></ ...
- Spring boot 2.x 中使用redis
一.添加Maven 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifac ...
- 解决苹果手机(IOS)input失焦后,页面不恢复的问题
var winHeight = $(window).height(); var u = navigator.userAgent, app = navigator.appVersionvar isIOS ...
- nginx 跨域设置
upstream nginx { ip_hash; server weight=; server weight=; } server { listen ; server_name www.enjoy. ...
- 【PAT甲级】1012 The Best Rank (25 分)
题意: 输入两个整数N,M(<=2000),接着分别输入N个学生的ID,C语言成绩,数学成绩和英语成绩. M次询问,每次输入学生ID,如果该ID不存在则输出N/A,存在则输出该学生排名最考前的一 ...
- 自定义更改 Xcode 新建 .h/.m 文件头部注释说明(文件名、工程名、作者、公司、版权等)信息
使用 Xcode 新建工程文件时,或默认生成一套注释说明信息在 .h/.m 文件的头部,说明了创建这个文件的名称.工程名.日期.作者.公司.版权等信息 // // ___FILENAME___ // ...