Почтовый индекс довольно прост, но у меня были проблемы с возвратом ZipInputStream в качестве Inputstream.По некоторым причинам, некоторые файлы, содержащиеся в zip-файле, содержали пропущенные символы.Ниже было мое решение, и до сих пор он работал.
private Map<String, InputStream> getFilesFromZip(final DataHandler dhZ,
String operation) throws ServiceFault {
Map<String, InputStream> fileEntries = new HashMap<String, InputStream>();
try {
ZipInputStream zipIsZ = new ZipInputStream(dhZ.getDataSource()
.getInputStream());
try {
ZipEntry entry;
while ((entry = zipIsZ.getNextEntry()) != null) {
if (!entry.isDirectory()) {
Path p = Paths.get(entry.toString());
fileEntries.put(p.getFileName().toString(),
convertZipInputStreamToInputStream(zipIsZ));
}
}
}
finally {
zipIsZ.close();
}
} catch (final Exception e) {
faultLocal(LOGGER, e, operation);
}
return fileEntries;
}
private InputStream convertZipInputStreamToInputStream(
final ZipInputStream in) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
IOUtils.copy(in, out);
InputStream is = new ByteArrayInputStream(out.toByteArray());
return is;
}