ファイルを追加、削除、および読み込むためにzipファイルに頻繁にアクセスする必要があるアプリケーションを開発しています。私はこれらのすべてをかなり簡単に行うことができることを約束しているので、私は真のジップを使用していると思っています(現在ZIPファイルからの読み込みが最大の利点です)。アーカイブ。私のコード:TrueZipを使用してアーカイブ内にファイルを作成しようとするとEOF例外が発生する
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()メソッドを呼び出すと例外が発生します。そうでなければ、後で内部ファイルを作成しようとすると(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>
だから私は、私は私が得ることができる任意のアドバイスは上のほとんどの例として高く評価されるだろうそうやってさっぱりだがインターネットは私が持っているより多くの知識を引き受けるようです。