ZipEntry returns 来自 BLOB ZipArchiveInputStream 的 null
ZipEntry returns null from BLOB ZipArchiveInputStream
主要问题是我从 zipEntry 得到的结果为空。我正在做的是从数据库中获取 BLOB.zip,将其定向到输入流,从那里到 zipArchiveInputStream 和 ZipEntry,每次都是 returns null。在使用 ZipInputStream 并得到相同的空结果后,我决定使用 ZipArchiveInputStream。
public byte[] getXMLStream() {
try {
return this.jdbcTemplate.queryForObject("SELECT SAVEDATA FROM JDBEVPP1.TEVP005 WHERE GFNR = 357420", byte[].class); }
catch(DataAccessException ex) {
ex.printStackTrace();
return null;}}
@Override
public void getXMLdata() {
byte[] str = getXMLStream();
InputStream myInputStream = new ByteArrayInputStream(str);
ZipArchiveInputStream fis = new ZipArchiveInputStream(myInputStream);
ZipEntry entry = null;
try {
while ( (entry = fis.getNextZipEntry()) != null ) {
System.out.println(entry.getName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
我只需要得到这个 xml 并在控制台中打印出来进行测试。知道这里出了什么问题或如何让它发挥作用吗?
编辑:BLOB 内部是 XML 我需要在控制台上显示的格式。
我使用 GZIPInputStream 解决了这个问题。它似乎是通用的 xml 最后..
try {
GZIPInputStream gzip = new GZIPInputStream(bys);
Reader decoder = new InputStreamReader(gzip, "UTF-8");
BufferedReader buffered = new BufferedReader(decoder);
System.out.println(buffered.readLine());
String data = buffered.readLine();
InputSource xml = new InputSource(new StringReader(data));
System.out.println(xml);
} catch (IOException e) {
e.printStackTrace();
}
主要问题是我从 zipEntry 得到的结果为空。我正在做的是从数据库中获取 BLOB.zip,将其定向到输入流,从那里到 zipArchiveInputStream 和 ZipEntry,每次都是 returns null。在使用 ZipInputStream 并得到相同的空结果后,我决定使用 ZipArchiveInputStream。
public byte[] getXMLStream() {
try {
return this.jdbcTemplate.queryForObject("SELECT SAVEDATA FROM JDBEVPP1.TEVP005 WHERE GFNR = 357420", byte[].class); }
catch(DataAccessException ex) {
ex.printStackTrace();
return null;}}
@Override
public void getXMLdata() {
byte[] str = getXMLStream();
InputStream myInputStream = new ByteArrayInputStream(str);
ZipArchiveInputStream fis = new ZipArchiveInputStream(myInputStream);
ZipEntry entry = null;
try {
while ( (entry = fis.getNextZipEntry()) != null ) {
System.out.println(entry.getName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
我只需要得到这个 xml 并在控制台中打印出来进行测试。知道这里出了什么问题或如何让它发挥作用吗?
编辑:BLOB 内部是 XML 我需要在控制台上显示的格式。
我使用 GZIPInputStream 解决了这个问题。它似乎是通用的 xml 最后..
try {
GZIPInputStream gzip = new GZIPInputStream(bys);
Reader decoder = new InputStreamReader(gzip, "UTF-8");
BufferedReader buffered = new BufferedReader(decoder);
System.out.println(buffered.readLine());
String data = buffered.readLine();
InputSource xml = new InputSource(new StringReader(data));
System.out.println(xml);
} catch (IOException e) {
e.printStackTrace();
}