IonicZip でファイルが破損するという問題が発生しています。最初はファイル名のせいだと思っていましたが、そうではないことがわかりました。物事をまとめるために使用するコードは次のとおりです
using (ZipFile pack = new ZipFile())
{
pack.AddProgress += (s, eventArgs) =>
{
if (eventArgs.EventType == ZipProgressEventType.Adding_AfterAddEntry)
{
Regex pattern = new Regex("[(]|[)]|[']|[[]|[]]|[+]");
eventArgs.CurrentEntry.FileName = pattern.Replace(eventArgs.CurrentEntry.FileName, "");
}
};
pack.AddDirectory(defPackageCreationPath + "\\installfiles", "");
pack.Save(outputPath + "\\package.mpp");
}
正規表現を使用して、パックされているファイルのファイル名から表示されている文字を削除しました。ファイル名が何らかの形で破損したためだと思ったからです。そうではありません。
例を示します。問題なくこのファイルを圧縮できます
[Forge]FurnitureModv2.9.2(FULL).zip
でも!同じファイルを他の多くのファイルと一緒に圧縮すると、すべてが台無しになります..
ソースフォルダーのこのスクリーンショットを見てください。ファイルを取得して上記のコードでそれらをパックし、右側に抽出されたフォルダーを示します。
ソース ディレクトリのファイル サイズが抽出されたファイル サイズと一致しないことに注意してください。サイズをもう一度見てみましょう。ファイル名がソースのものと一致しません! 前に説明した [Forge]FurnitureModv2.9.2(FULL).zip というファイルは、現在は ForgeFurnitureModv2.9.2FULL.zip と呼ばれ、467KB から 51KB に減りました。開こうとすると、破損していると言われます。 ..しかし、TooMuchTNT v2.5.zipファイルを見てください..このファイルのサイズは、他のファイルがソースからのものであるため467KBです。このファイルを開くと、[Forge]FurnitureModv2にあるはずのコンテンツが取得されます.9.2(FULL).zip !
全体として、2つの問題があります。
- ファイル名がソースフォルダーの内容と一致しないということです
- 一部のファイルは破損しますが、他のファイルなしで破損するファイルをパックすると、正常に動作し、破損しません。
お手伝いできますか?多分私はファイルを間違って梱包していますか?