Подобный вопрос задавал Дмитрий Марченко.
По сути - у меня все так же. При этом валик ругается: "Метод не возвращает правильный список свойств файлов. Проверь реализацию"
Что я напортачил?
public List<FileProperties> getFilesList() throws Exception{
if (!Files.isRegularFile(zipFile)) throw new WrongZipFileException();
List<FileProperties> fileProperties = new LinkedList<>();
try (ZipInputStream zipInputStream = new ZipInputStream(Files.newInputStream(zipFile))){
ZipEntry zipEntry;
while ((zipEntry = zipInputStream.getNextEntry()) != null){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
copyData(zipInputStream, baos);
fileProperties.add(new FileProperties(zipEntry.getName(), zipEntry.getSize(),
zipEntry.getCompressedSize(), zipEntry.getMethod()));
}
zipInputStream.closeEntry();
}
return fileProperties;
}package com.javarush.task.task31.task3110;
public class FileProperties {
private String name;
private long size;
private long compressedSize;
private int compressionMethod;
public FileProperties(String name, long size, long compressedSize, int compressionMethod) {
this.name = name;
this.size = size;
this.compressedSize = compressedSize;
this.compressionMethod = compressionMethod;
}
public String getName() {
return name;
}
public long getSize() {
return size;
}
public long getCompressedSize() {
return compressedSize;
}
public int getCompressionMethod() {
return compressionMethod;
}
public long getCompressionRatio() {
// Вычисляем степень сжатия
return 100 - ((compressedSize * 100) / size);
}
@Override
public String toString() {
// Строим красивую строку из свойств
StringBuilder builder = new StringBuilder();
builder.append(name);
if (size > 0) {
builder.append("\t");
builder.append(size / 1024);
builder.append(" Kb (");
builder.append(compressedSize / 1024);
builder.append(" Kb) сжатие: ");
builder.append(getCompressionRatio());
builder.append("%");
}
return builder.toString();
}
}