Apache Tika를 사용하여 Zip 아카이브 내의 파일에서 콘텐츠 추출
문제:
개발 Apache Tika를 활용하여 zip 아카이브에 저장된 파일의 내용을 읽는 Java 프로그램입니다. zip 아카이브에는 다양한 파일 형식(예: txt, pdf 및 docx)이 포함되어 있습니다.
해결책:
원하는 기능을 얻으려면 다음 단계를 따르세요.
Zip 아카이브 구문 분석:
Apache Tika 호출:
콘텐츠 추출 및 변환:
추출된 콘텐츠 통합:
코드 스니펫 (수정됨):
<code class="java">import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.Metadata; import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.parser.BodyContentHandler; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.Parser; import org.apache.tika.sax.BodyContentHandlerFactory; import org.xml.sax.SAXException; public class ImprovedZipExtractor { public static void main(String[] args) { List<String> tempString = new ArrayList<>(); 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(); 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(zip, new BodyContentHandlerFactory(BodyContentHandlerFactory.INCLUDE_ENTITY_ROOT, false).getNewBodyContentHandler(), metadata, new ParseContext()); tempString.add(sbf.toString()); } entry = zip.getNextEntry(); } 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) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (TikaException e) { e.printStackTrace(); } } }</code>
참고: 각 반복 중에 sbf가 덮어쓰이는 것을 방지하고 루프 외부에서 이를 지워 연결된 항목을 저장하도록 코드를 수정하는 것이 중요합니다. 모든 파일의 콘텐츠입니다.
위 내용은 Java에서 Apache Tika를 사용하여 zip 아카이브 내의 파일에서 콘텐츠를 추출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!