永发信息网

java怎么解包

答案:2  悬赏:50  手机版
解决时间 2021-01-31 05:43
  • 提问者网友:書生途
  • 2021-01-31 02:17
java怎么解包
最佳答案
  • 五星知识达人网友:枭雄戏美人
  • 2021-01-31 02:43
//解压缩ZIP 参数 zip文件(绝对路径) 返回解压后的文件列表(绝对路径)
public static List untieZipFile(String zipFile) throws FileNotFoundException, IOException{
List fileList = new ArrayList();
// ZIP文件输入流
ZipInputStream zinStream;
try {
zinStream = new ZipInputStream(new FileInputStream(zipFile));

ZipEntry ze;

// pathTemp 去掉.zip后缀 生成对应的释放文件夹
String pathTemp = zipFile.replaceAll("\\\\", "/").replaceAll("//","/").substring(0, zipFile.length() - 5);

// 如果有同名目录,删除原有目录下的文件
java.io.File oldFile = new File(pathTemp);
if (oldFile.exists()) {
deleteFileList(oldFile);
}

// 解压ZIP中全部文件
while ((ze = zinStream.getNextEntry()) != null) {
if(ze.getName().indexOf(".") != -1){
// fileTemp 获得ZIP中文件列表的路径
String[] fileTemp = ze.getName().replaceAll("\\\\", "/").replaceAll("//", "/").split("/");

// writeFile ZIP中单个文件的绝对路径
String writeFile = pathTemp;

for (int i = 0; i < fileTemp.length-1; i++) {
writeFile = writeFile + "/" + fileTemp[i];
}

java.io.File newFile = new File(writeFile);
if (!newFile.exists()) {
newFile.mkdirs();
}

// 构造出与ZIP中路径相同的输出流
OutputStream zoutStream = new FileOutputStream(writeFile + "/" + fileTemp[fileTemp.length - 1]);

// 写入文件内容
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = zinStream.read(buffer, 0, 8192)) != -1) {
zoutStream.write(buffer, 0, bytesRead);
}
zoutStream.flush();
zoutStream.close();

fileList.add(writeFile + "/" + fileTemp[fileTemp.length - 1]);
}
}
zinStream.close();
} catch (FileNotFoundException e) {
throw new FileNotFoundException(FileUtils.class.getName()+ "#untieZipFile()#" + e.getMessage());
} catch (IOException e) {
throw new IOException(FileUtils.class.getName()+ "#untieZipFile()#" + e.getMessage());
}
return fileList;
}

//删除目录
public static void deleteFileList(File oldFile) {
if (oldFile != null || oldFile.exists() || oldFile.isDirectory()) {
File[] oldFileList = oldFile.listFiles();
if(oldFileList!=null){
for (int i = 0; i < oldFileList.length; i++) {
if (oldFileList[i].isFile()) {
oldFileList[i].delete();
} else if (oldFileList[i].isDirectory()) {
deleteFileList(oldFileList[i]);
}
}
}
oldFile.delete();
}
}
全部回答
  • 1楼网友:神也偏爱
  • 2021-01-31 04:14
只要下载java的游戏包安装到手机上就可以自动解压了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯