У меня есть inputStream файла docx, и мне нужно достать document.xml, который находится внутри docx.
Я использую ZipInputStream для чтения своего потока, и мой код похож на
ZipInputStream docXFile = new ZipInputStream(fileName);
ZipEntry zipEntry;
while ((zipEntry = docXFile.getNextEntry()) != null) {
if(zipEntry.getName().equals("word/document.xml"))
{
System.out.println(" --> zip Entry is "+zipEntry.getName());
}
}
Как вы можете видеть, вывод для zipEntry.getName в какой-то момент приходит как "word / document.xml". Мне нужно передать этот document.xml в виде потока, и в отличие от метода ZipFile, где вы можете легко передать это при вызове .getInputStream, мне интересно, как я могу сделать этот docXFile?
Спасибо заранее,
Минакши
@ Обновление:
Я нашел выход для этого решения:
ZipInputStream docXFile = new ZipInputStream(fileName);
ZipEntry zipEntry;
OutputStream out;
while ((zipEntry = docXFile.getNextEntry()) != null) {
if(zipEntry.toString().equals("word/document.xml"))
{
System.out.println(" --> zip Entry is "+zipEntry.getName());
byte[] buffer = new byte[1024 * 4];
long count = 0;
int n = 0;
long size = zipEntry.getSize();
out = System.out;
while (-1 != (n = docXFile.read(buffer)) && count < size) {
out.write(buffer, 0, n);
count += n;
}
}
}
Мне интересно, есть ли какой-нибудь базовый API для преобразования этого потока вывода в поток ввода?