Начиная с Java 7, NIO Api обеспечивает лучший и более общий способ доступа к содержимому файлов Zip или Jar. Фактически, теперь это унифицированный API, который позволяет обрабатывать Zip-файлы в точности как обычные файлы.
Чтобы извлечь все файлы, содержащиеся внутри zip-файла в этом API, вы должны сделать это:
В Java 8:
private void extractAll(URI fromZip, Path toDirectory) throws IOException{
FileSystems.newFileSystem(fromZip, Collections.emptyMap())
.getRootDirectories()
.forEach(root -> {
// in a full implementation, you'd have to
// handle directories
Files.walk(root).forEach(path -> Files.copy(path, toDirectory));
});
}
В java 7:
private void extractAll(URI fromZip, Path toDirectory) throws IOException{
FileSystem zipFs = FileSystems.newFileSystem(fromZip, Collections.emptyMap());
for(Path root : zipFs.getRootDirectories()) {
Files.walkFileTree(root, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException {
// You can do anything you want with the path here
Files.copy(file, toDirectory);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
throws IOException {
// In a full implementation, you'd need to create each
// sub-directory of the destination directory before
// copying files into it
return super.preVisitDirectory(dir, attrs);
}
});
}
}
Существует три класса устройств: ARM7 (iPhone, iPod touch первого поколения, iPhone 3G и iPod touch второго поколения), Cortex A8 (iPhone 3G S, iPod touch третьего поколения) и A4 (iPad, iPhone 4). Устройства одного класса должны иметь одинаковую производительность.
CoreGraphics в целом работает медленно, потому что вообще не использует графический процессор. Используйте CoreAnimation, чтобы разделить вашу сцену на слои и перерисовать только то, что необходимо для небольшого увеличения, или перенесите свой код рисования в OpenGL ES для лучшей производительности.