API Reference
EpubFileReader
EpubFileReader is the dedicated class for reading EPUB file content, following the Single Responsibility Principle, providing secure file reading functionality.
Constructor
java
public EpubFileReader(File epubFile)Create a file reader instance.
Parameters:
epubFile: EPUB file object
Throws:
IllegalArgumentException: If file parameter is null
File Reading Methods
readContent()
java
public String readContent(String path) throws EpubZipException, EpubPathValidationExceptionRead content from the specified path in the EPUB file.
Parameters:
path: File path
Returns:
String: File content
Throws:
EpubZipException: ZIP file reading exceptionEpubPathValidationException: Path validation exception
processHtmlChapterContent()
java
public void processHtmlChapterContent(String htmlFileName, Consumer<InputStream> processor)
throws EpubZipException, EpubPathValidationExceptionStream process HTML chapter content.
Parameters:
htmlFileName: HTML file nameprocessor: Content processor, receives InputStream
Throws:
EpubZipException: ZIP file processing exceptionEpubPathValidationException: Path validation exception
processMultipleHtmlChapters()
java
public void processMultipleHtmlChapters(List<String> htmlFileNames,
BiConsumer<String, InputStream> processor)
throws EpubZipException, EpubPathValidationExceptionStream process multiple HTML chapter content.
Parameters:
htmlFileNames: HTML file name listprocessor: Content processor, receives file name and InputStream
Throws:
EpubZipException: ZIP file processing exceptionEpubPathValidationException: Path validation exception
Security Features
- Path Validation: Automatically validate file paths to prevent directory traversal attacks
- ZIP Security: Use secure ZIP file processing mechanisms
- Exception Handling: Provide detailed exception information for debugging
Usage Example
java
File epubFile = new File("book.epub");
EpubFileReader reader = new EpubFileReader(epubFile);
// Read text content
try {
String mimetype = reader.readContent("mimetype");
System.out.println("MIME type: " + mimetype);
String container = reader.readContent("META-INF/container.xml");
System.out.println("Container content: " + container);
} catch (EpubZipException | EpubPathValidationException e) {
System.err.println("Failed to read file: " + e.getMessage());
}
// Stream process HTML content
reader.processHtmlChapterContent("chapter1.xhtml", inputStream -> {
try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
String line;
while ((line = br.readLine()) != null) {
// Process each line
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
});
// Batch process multiple files
List<String> files = Arrays.asList("chapter1.xhtml", "chapter2.xhtml");
reader.processMultipleHtmlChapters(files, (fileName, inputStream) -> {
System.out.println("Processing file: " + fileName);
// Process file content
});Notes
- All paths are validated for security
- InputStream is automatically closed after processor execution
- Supports all compression formats in ZIP files
- Provides detailed error information for problem diagnosis