1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > java不解压获取压缩包(zip rar)文件列表或文本文件内容

java不解压获取压缩包(zip rar)文件列表或文本文件内容

时间:2019-07-15 16:52:23

相关推荐

java不解压获取压缩包(zip rar)文件列表或文本文件内容

目录

1、导入依赖

2、获取zip压缩文件的文件列表(不包含文件夹)

3、获取zip文件的其中一个文本的内容

4、获取rar文件的文件列表(不包括文件夹)

5、获取rar文件其中一个文本文件的文件内容

6、实体类FileMessage,我这里只记录了文件名和文件大小

1、导入依赖

<dependency><groupId>mons</groupId><artifactId>commons-compress</artifactId><version>1.12</version></dependency><dependency><groupId>com.github.junrar</groupId><artifactId>junrar</artifactId><version>3.0.0</version></dependency>

2、获取zip压缩文件的文件列表(不包含文件夹)

public List<FileMessage> getZipFileList(String zipFileName) throws IOException {ZipInputStream zipInputStream = null;try (FileInputStream inputStream = new FileInputStream(zipFileName)) {zipInputStream = new ZipInputStream(new BufferedInputStream(inputStream), StandardCharsets.UTF_8);java.util.zip.ZipEntry ze;List<FileMessage> list = new ArrayList<>();//循环遍历while ((ze = zipInputStream.getNextEntry()) != null) {if (!ze.isDirectory()) {list.add(new FileMessage(ze.getName(), ze.getSize()));}}return list;} catch (Exception e) {logger.error(" getZipOneFileContent error:" + e.getMessage());return null;} finally {if (zipInputStream != null) {zipInputStream.closeEntry();}}}

3、获取zip文件的其中一个文本的内容

public String getZipOneTestFileContent(String zipFileName, String fileName) throws IOException {ZipInputStream zipInputStream = null;FileInputStream inputStream = null;try {inputStream = new FileInputStream(zipFileName);zipInputStream = new ZipInputStream(new BufferedInputStream(inputStream), StandardCharsets.UTF_8);java.util.zip.ZipEntry ze;//循环遍历StringBuilder txtStr = new StringBuilder();while ((ze = zipInputStream.getNextEntry()) != null) {if (!ze.isDirectory() && ze.getName().equals(fileName)) {byte[] b = new byte[1024];int leng;while ((leng = zipInputStream.read(b)) != -1) {txtStr.append(new String(b, 0, leng));}break;}}return txtStr.toString();} catch (Exception e) {logger.error(" getZipOneFileContent error:" + e.getMessage());return null;} finally {if (inputStream != null) {inputStream.close();}if (zipInputStream != null) {zipInputStream.close();}}}

4、获取rar文件的文件列表(不包括文件夹)

注意rar的版本不能过高,如图所示选择rar4

public List<FileMessage> getRarList(String rarFileName) throws IOException {FileInputStream inputStream = null;Archive archive = null;try {inputStream = new FileInputStream(rarFileName);archive = new Archive(inputStream);FileHeader fileHeader = archive.nextFileHeader();List<FileMessage> list = new ArrayList<>();while (fileHeader != null) {if (fileHeader.isDirectory()) {continue;}list.add(new FileMessage(fileHeader.getFileNameString(), fileHeader.getFullUnpackSize()));fileHeader = archive.nextFileHeader();}return list;} catch (Exception e) {logger.error(" getRarFileList error:" + e.getMessage());return null;} finally {if (inputStream != null) {inputStream.close();}if (archive != null) {archive.close();}}}

5、获取rar文件其中一个文本文件的文件内容

public String getRarContent(String rarFileName, String fileName) throws IOException {FileInputStream inputStream = null;Archive archive = null;InputStream fileInputStream = null;try {inputStream = new FileInputStream(rarFileName);archive = new Archive(inputStream);FileHeader fileHeader = archive.nextFileHeader();StringBuilder txtStr = new StringBuilder();while (fileHeader != null) {if (fileName.equals(fileHeader.getFileNameString())) {byte[] b = new byte[1024];int len;fileInputStream = archive.getInputStream(fileHeader);while ((len = fileInputStream.read(b)) != -1) {txtStr.append(new String(b, 0, len));}break;}fileHeader = archive.nextFileHeader();}return txtStr.toString();} catch (Exception e) {logger.error(" getRarFileContent error:" + e.getMessage());return null;} finally {if (inputStream != null) {inputStream.close();}if (archive != null) {archive.close();}if (fileInputStream != null) {fileInputStream.close();}}}

6、实体类FileMessage,我这里只记录了文件名和文件大小

public class FileMessage {private String fileName;private Long fileSize;public FileMessage(String fileName, Long fileSize) {this.fileName = fileName;this.fileSize = fileSize;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。