В Eclipse, когда я пытаюсь отобразить содержимое файлов из zip в конце каждого файла, это [] [] [] [] [] [] [] [] [] []. Может ли кто-нибудь объяснить это?
def uploadTheme(String themeName, def inputStream) {
def themeNameUp = themeName.toUpperCase()
def themeKey = this.prefix + themeNameUp
if (redisService.exists(themeKey) && inputStream) {
ZipInputStream zipFile = new ZipInputStream(inputStream)
ZipEntry zipEntry = zipFile.nextEntry
while (zipEntry) {
def key = zipEntry.name
if (key.startsWith(this.widgetPrefix) || key.startsWith(this.templatePrefix)) {
byte[] data = new byte[4096]
StringBuffer zipContent = new StringBuffer()
int length = zipFile.read(data, 0, data.size())
while (length != -1) {
zipContent << new String(data)
length = zipFile.read(data, 0, data.size())
}
if (key.endsWith(":data")) {
def prevData = redisService.hget(themeKey, key)
if (prevData) {
historyService.addHistory(themeNameUp + ":" + key[0..-6], prevData)
}
}
redisService.hset(themeKey, key, zipContent.toString())
}
zipFile.closeEntry()
zipEntry = zipFile.nextEntry
}
zipFile.close()
}
zipContent << new String(data)
должно быть
zipContent << new String(data, 0, length)
поскольку длина - это число того, что действительно читается. На конце длина меньше размера данных.
Имейте в виду, что созданная строка: