String a = new String("foo");
String b = new String("foo");
System.out.println(a == b); // prints false
System.out.println(a.equals(b)); // prints true
Убедитесь, что вы понимаете, почему. Это потому, что сравнение ==
сравнивает только ссылки; equals()
метод сопоставляет содержимое по символу.
Когда вы вызываете new для a
и b
, каждый получает новую ссылку, указывающую на "foo"
в таблице строк. Ссылки разные, но контент один и тот же.
Насколько я понимаю, в формате zip файлы хранятся отдельно, и каждый сохраненный файл сжимается с использованием алгоритма сжатия (обычно это алгоритм DEFLATE).
Если вас интересует только распаковка данные, которые были сжаты с использованием алгоритма DEFLATE, вы можете использовать это zlib-дополнение к NSData из Google Toolbox для Mac
Временные файлы не требуются.
В этом ответе на этот вопрос я указываю на категорию вики CocoaDev в NSData который добавляет к этому классу поддержку zip / unzip. Это позволит вам делать это полностью в памяти.