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

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. bootstrap-suggest-plugin input可选可输(表单) 好用的前端插件

    bootstrap-suggest-plugin          DEMO下载 1.准备:页面引入(点击下载) <link rel="stylesheet" href=&q ...

  2. C语言-排序和查找

    一 冒泡排序:算法特点:两层循环外层控制排序的趟数,内存控制相邻元素两两比较的次数.n个数共需n-1趟,(i=1;i<n;i++)趟数=n-1-1+1,其中第j趟需要相邻元素两两比较的次数为n- ...

  3. django xadmin中logout页面在chrome浏览器中点击关闭页面无效

    问题现象 django xadmin中logout页面在chrome浏览器中点击关闭页面无效,无法关闭相应的页面 问题原因 高版本的chrome等浏览器不支持在window.colse()的写法 问题 ...

  4. ip命令规范

    从centos7以前我们一直使用ifconfig命令来执行网络相关的任务,比如检查和配置网卡信息,但是ifconfig已经不再被维护,并且在最近版本的Linux中被废除了!ifconfig命令已经被i ...

  5. win10 设置jdk环境变量

    win10环境变量较为特殊 只需要设置JAVA_HOME和PATH,设置后可以通过java -version 和 javac -version 验证查看jdk得版本号和编译版本号 具体如下图所示:

  6. BlockingQueue的几个实现分析

    ArrayBlockingQueue 底层以数组的结构存放队列元素,容量大小不可改变. 先看下变量: items:数组,用于存放队列中的元素 takeIndex:获取元素的索引位置 putIndex: ...

  7. Omnisharp VsCode Attaching to remote processes

    原文链接: https://github.com/OmniSharp/omnisharp-vscode/wiki/Attaching-to-remote-processes The C# extens ...

  8. .net core 2.1控制台使用Quartz.net实现定时任务执行

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

  9. Python学习笔记002

    字符编码:把二进制字符翻译成字符 ASCII码表    256    一个字节,8个比特 支持中文: GB2312 GBK1.0 GB18030 BIG5(台湾) unicode UTF-8 开头定义 ...

  10. python--一起来盖个时间戳!!

    1.datetime import datetime print(datetime.datetime.now()) 2.time import time otherStyleTime = time.s ...