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

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 web第一次课堂测试1

    ---恢复内容开始--- 要求如图: 本程序包括四个文件,一个显示界面的jsp文件,一个dao层文件,一个servlet层文件 一个连接数据库的文件 下面依次附上代码: 前端界面: <%@ pa ...

  2. linux(centos6.10)下去掉mysql的强密码验证

    vim /etc/my.cnf shift + G      光标移到最下方: o    进入插入模式,同时换行: 添加一行语句:  validate_password=OFF 保存退出. servi ...

  3. http协议学习 —— post请求方法提交application/x-www-form-urlencoded类型的数据格式

    先推荐一篇很不错的文章:https://imququ.com/post/four-ways-to-post-data-in-http.html 说一下,如果是自己编写底层,那么要注意了,不能只有提交数 ...

  4. 实验一&#160;&#160;GIT 代码版本管理

    实验一  GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)   熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...

  5. java中关于&0xFF 的问题

    最近遇到一个问题,半天也没想明白,byte temp = 0xA0,为什么System.out.println(temp),打印的值为:-96:而System.out.println(temp& ...

  6. 自定义Redis作为Session存储服务提供

    之前看网上介绍可使用Redis自定义Session托管,使用第三方的Harbour.RedisSessionStateStore GitHub:https://github.com/TheCloudl ...

  7. Go语言学习笔记(四)

    一.字符串 1.字符串截取 可以使用len(字符串变量)获取字符串的字节长度,其中英文占1个字节长度,中文占用3个字节长度 可以使用变量名[n]获取到字符串第n+1个字节,返回这个字节对应的Unico ...

  8. 区间树Splay——[NOI2005]维护数列

    无指针Splay超详细讲解 区间树这玩意真TM玄学. 学这东西你必须要拥有的 1.通过[模板]文艺平衡树(Splay),[模板]普通平衡树,GSS3 - Can you answer these qu ...

  9. selenium webdriver 执行Javascript

    @Test public void testElementByID() { //通过JS获取页面元素 driver.get(url); driver.manage().window().maximiz ...

  10. scrapy extention实战-空闲时关闭爬虫

    scrapy extention实战 1.      空闲-关闭 使用扩展+spider_idle信号关闭爬虫. 启用扩展:settings.py EXTENSIONS = {     #'scrap ...