Я занимаюсь разработкой приложения, которому необходим частый доступ к zip-файлу для добавления, удаления и чтения файлов. Я смотрю на использование truezip, потому что оно обещает, что я могу сделать все это довольно легко (возможность передавать arond и читать из текущего заархивированного файла - самое большое преимущество, которое он представляет), но при игре с ним я не могу добавлять файлы в архив. Мой код:
public void testfunction()
{
//below create the archive if it doesn't exist
TFile tFile = new TFile("src\\test\\resources\\archiveTest\\demoZip.zip");
if (!tFile.exists()) // I get an EOFException here
{
tFile.createNewFile();
}
TFile innerFile = new TFile("src\\test\\resources\\archiveTest\\demoZip.zip\\someText.txt");
innerFile.createNewFile(); // also here
BufferedWriter out = new BufferedWriter(new FileWriter(innerFile));
out.write("demo text");
out.close(); // I know this is bad
}
Когда я запускаю это, я получаю исключение java.io.EOFException, независимо от того, как я пытаюсь организовать эту простую вещь. Если я пытаюсь убедиться, что файл уже создан, я получаю исключение при вызове метода tFile.exists (). Если я этого не сделаю, то получу его, когда попытаюсь позже создать innerFile (даже если zip-файл уже существует).
Должен заметить: в примерах из архива TrueZip используется класс TApplication, но я не могу этого сделать. Я должен иметь возможность использовать эту библиотеку практически из коробки. Я не могу изменить структуру приложения, поэтому создание самого приложения в качестве подкласса TApplication не является жизнеспособным решением (хотя я могу изменить структуру вызывающего класса так, как мне нужно).
В настоящее время мой POM включает следующие зависимости (включенные в примеры, которые я нашел):
<dependency>
<groupId>de.schlichtherle.truezip</groupId>
<artifactId>truezip-file</artifactId>
<version>7.4.1</version>
</dependency>
<dependency>
<groupId>de.schlichtherle.truezip</groupId>
<artifactId>truezip-driver-zip</artifactId>
<version>7.4.1</version>
</dependency>
<dependency>
<groupId>de.schlichtherle.truezip</groupId>
<artifactId>truezip-kernel</artifactId>
<version>7.4.1</version>
</dependency>
<dependency>
<groupId>de.schlichtherle.truezip</groupId>
<artifactId>truezip-driver-file</artifactId>
<version>7.4.1</version>
</dependency>
Так что я понятия не имею, что я делаю, поэтому любой совет, который я мог бы получить, был бы оценен, поскольку большинство примеров в Интернете, кажется, предполагают больше знаний, чем я.