Java从Zip文件中的文件读取内容

我正在尝试创建一个简单的Java程序,该程序从zip文件中的文件读取和提取内容。压缩文件包含3个文件(txt,pdf,docx)。我需要阅读所有这些文件的内容,并且为此使用了Apache Tika。

有人可以帮我实现此功能。到目前为止,我已经尝试过了,但是没有成功

代码段

public class SampleZipExtract {

public static void main(String[] args) {

List<String> tempString = new ArrayList<String>();

StringBuffer sbf = new StringBuffer();

File file = new File("C:\\Users\\xxx\\Desktop\\abc.zip");

InputStream input;

try {

input = new FileInputStream(file);

ZipInputStream zip = new ZipInputStream(input);

ZipEntry entry = zip.getNextEntry();

BodyContentHandler textHandler = new BodyContentHandler();

Metadata metadata = new Metadata();

Parser parser = new AutoDetectParser();

while (entry!= null){

if(entry.getName().endsWith(".txt") ||

entry.getName().endsWith(".pdf")||

entry.getName().endsWith(".docx")){

System.out.println("entry=" + entry.getName() + " " + entry.getSize());

parser.parse(input, textHandler, metadata, new ParseContext());

tempString.add(textHandler.toString());

}

}

zip.close();

input.close();

for (String text : tempString) {

System.out.println("Apache Tika - Converted input string : " + text);

sbf.append(text);

System.out.println("Final text from all the three files " + sbf.toString());

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SAXException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (TikaException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

回答:

如果你想知道如何从每个文件中获取文件内容,ZipEntry那实际上很简单。这是一个示例代码:

public static void main(String[] args) throws IOException {

ZipFile zipFile = new ZipFile("C:/test.zip");

Enumeration<? extends ZipEntry> entries = zipFile.entries();

while(entries.hasMoreElements()){

ZipEntry entry = entries.nextElement();

InputStream stream = zipFile.getInputStream(entry);

}

}

一旦拥有InputStream,就可以根据需要读取它。

以上是 Java从Zip文件中的文件读取内容 的全部内容, 来源链接: utcz.com/qa/434236.html

回到顶部