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即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
随机推荐
- ssh paramiko && subprocess
subprocess: #!/usr/bin/python3 import paramiko import os import sys import subprocess curPath = os.p ...
- Servlet返回的数据js解析问题
Servlet返回的数据js解析问题 方式1:Json 接收函数:ajax.responseText后面没括号 其实在之前所说的ajax中还遗留了一些问题就是,Servlet返回给js的数据是如何被j ...
- vue 之 axios Vue路由与element-UI
一. 在组件中使用axios获取数据 1. 安装和配置axios 默认情况下,我们的项目中并没有对axios包的支持,所以我们需要下载安装. 在项目根目录中使用 npm安装包 npm install ...
- Js判断值是否是NaN
方法一:window.isNaN() 注意: window.isNaN 只对数值有效,如果传入其他值,会被先转成数值.比如,传入字符串的时候,字符串会被先转成NaN,所以最后返回true,这一点要特别 ...
- nginx 性能优化的概述及在CPU资源方面的处理
nginx的性能优化的概述 软件层面的提升硬件的使用率 增大CPU的利用率 增大内存的利用率 增大磁盘IO利用率 增大网络带宽利用率 提升硬件规格 网卡:万兆网卡.例如10G.25G.40G等 磁盘: ...
- 吴裕雄--天生自然PythonDjangoWeb企业开发:框架基础和技术选型
简单的Web Server import socket eol1 = b'\n\n' eol2 = b'\n\r\n' body = '''Hello,world!<h1>tszrwyx& ...
- git github 对代码的管理
参考:https://www.cnblogs.com/feynman61/p/9005252.html 一.Git 对远程仓库版本回退 场景: 同事 a.b 同时修改了代码,提交到仓库 同时 c 不熟 ...
- ApacheDbUtilsTest
ApacheDbUtilsTest package p1; import com.DataSourceUtil; import entity.Student; import org.apache.co ...
- How to backup on MSSQL by table level ?
MSSQL is good database. Unlike as Oracle, it seems that can not backup sqlserver databasee tables ...
- Golang gin框架学习
今天开始学习gin框架,在Github上找的示例的go-gin-example, 进度 日期 进展 疑惑 进展 1.30 下拉代码,初步了解gin的介绍.搭建 .mod文件 module原理.使用方法 ...