不解压压缩文件,获取其中包含的文件,通过文件名检查是否包含非法文件。(后续再根据文件头或内容吧)

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读取压缩文件信息的更多相关文章

  1. Java读取txt文件信息并操作。

    一.java读取txt文件内容 import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.Fi ...

  2. java读取properties 文件信息

      src下config/tank.properties文件 initTankCount=10 ReinitTankCount=8 Etmspeed=15 Mtmspeed=15 MTankCount ...

  3. Java学习笔记之I/O流(读取压缩文件以及压缩文件)

    1.读取压缩文件:ZipInputStream 借助ZipFile类的getInputStream方法得到压缩文件的指定项的内容,然后传递给InputStreamReader类的构造方法,返回给Buf ...

  4. JAVA读取XML文件并解析获取元素、属性值、子元素信息

    JAVA读取XML文件并解析获取元素.属性值.子元素信息 关键字 XML读取  InputStream   DocumentBuilderFactory   Element     Node 前言 最 ...

  5. java读取properties配置文件信息

    一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...

  6. java 读取XML文件作为配置文件

    首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...

  7. java ZIP压缩文件

    问题描述:     使用java ZIP压缩文件和目录 问题解决:     (1)单个文件压缩 注:     以上是实现单个文件写入压缩包的代码,注意其中主要是在ZipOutStream流对象中创建Z ...

  8. java 读取TXT文件的方法

    java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...

  9. java读取TXT文件的方法

    java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...

随机推荐

  1. Java单例和多例

    背景:最近在学习韩老师的笔记时候发现不是很了解单例和多例,于是通过网上查找资料的方式去学习. 设计模式:最佳的实践,是软件开发人员在软件开发过程中面临一般解决方案,也就是开发的经验总结. 单例模式(S ...

  2. WLC Crash采集什么信息?

    WLC和思科的路由器交换机不同,Cisco的WLC采用的是AireOS. 如果WLC crash或无故重启,可以尝试采集如下信息: AireOS WLC version 8.0.140.0 or hi ...

  3. 洛谷P1346 电车(需要稍加思索的最短路)

    题目描述 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口,都有一个开关决定 ...

  4. java里自定义分页查询的尝试

    public String list(){ try { LoginUser loginUser = getLoginUser();//获取当前登录用户 if(curpage<=0){ curpa ...

  5. C++ STL之集合set的使⽤

    写在最前面,本文摘录于柳生笔记: set是集合,一个set里面个元素各不相同的,而且set会按照元素从小到大的进行排序,一下是set的常用方法:

  6. 解决CentOS下boost安装后不能使用的问题

    先说一说整个经历. 因为之前没有注意到gcc4.8.5比较旧,就已经安装好boost了,当时已经可以使用了,后来发现gcc太老了,一些软件安装需要比较新的gcc支持,所以决定升级gcc,结果boost ...

  7. ZooKeeper 相关知识

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/zhang123456456/articl ...

  8. javascript 变量、常量 、 函数 声明

    声明变量: 方式一: 使用 var 定义变量,可在定义的同时赋值 或 不赋值 . 方式二: 直接使用[变量名 = 值]的形式,这会定义一个全局变量,但在严格模式下会出现引用错误.[不建议使用] 方式三 ...

  9. 爬虫(十四):Scrapy框架(一) 初识Scrapy、第一个案例

    1. Scrapy框架 Scrapy功能非常强大,爬取效率高,相关扩展组件多,可配置和可扩展程度非常高,它几乎可以应对所有反爬网站,是目前Python中使用最广泛的爬虫框架. 1.1 Scrapy介绍 ...

  10. Spring开发踩坑记录

    #1 @EnableEurekaServer无法正常import原因是spring-cloud-dependencies版本太低,改成高版本的Edgware.SR4即可.参考:https://www. ...