|
分類:[VB.NET/VB2005 以降]
こんにちは。 現在SharpZipLibを使用して、フォルダを圧縮するという事をしています。 実際に、圧縮をかけてみるとエラーが発生してしまいます。
FileNotFoundException はハンドルされませんでした。 ファイルまたはアセンブリ 'ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
このブログラムの書いてあるフォームを呼び出す所にエラーが出ています。
Dim f As New Form5() f.ShowDialog(Me) ☜ここの部分が強調されていました。 f.Dispose( )
☟プログラム '作成するZIP書庫のパス Dim zipPath As String = TextBox2.Text & TextBox3.Text & ".zip" '圧縮するファイルのあるフォルダのパス Dim zipFolder As String = TextBox1.Text
'書き込むZIP書庫のStream Dim writer As New System.IO.FileStream(zipPath, _ System.IO.FileMode.Create, System.IO.FileAccess.Write) 'ZipOutputStreamを作成 Dim zos As New ICSharpCode.SharpZipLib.Zip.ZipOutputStream(writer)
'圧縮レベルを設定する。0は圧縮しない。9は最高圧縮。 zos.SetLevel(ComboBox2.Text) If TextBox1.Text = "" Then 'パスワードを設定する 'zos.Password = "pass" Else 'パスワードを設定する zos.Password = TextBox4.Text End If '圧縮するフォルダにあるファイルを取得 Dim files As String() = System.IO.Directory.GetFiles(zipFolder, _ "*", System.IO.SearchOption.AllDirectories)
'ファイル名からエントリ名を決定するためにZipNameTransformを使用する 'zipFolderを基にした相対パスをエントリ名にする Dim nameTrans As New ICSharpCode.SharpZipLib.Zip.ZipNameTransform(zipFolder)
For Each file As String In files 'ZIP内のエントリの名前を決定する Dim f As String = nameTrans.TransformFile(file)
'ZipEntryを作成 Dim ze As New ICSharpCode.SharpZipLib.Zip.ZipEntry(f)
'エントリ情報を設定する。設定しなくてもよい Dim fi As New System.IO.FileInfo(file) '時間を設定する ze.DateTime = fi.LastAccessTime '属性を保持する ze.ExternalFileAttributes = CInt(fi.Attributes) 'サイズを設定する ze.Size = fi.Length 'エントリ名とコメントにunicode UTF8を使う 'ze.IsUnicodeText = True
'新しいエントリの追加を開始 zos.PutNextEntry(ze)
'圧縮するファイルを読み込む Dim fs As New System.IO.FileStream(file, _ System.IO.FileMode.Open, System.IO.FileAccess.Read) Dim buffer As Byte() = New Byte(2047) {} Dim len As Integer While True len = fs.Read(buffer, 0, buffer.Length) If len = 0 Then Exit While End If '書庫に書き込む zos.Write(buffer, 0, len) End While fs.Close() Next
'閉じる zos.Finish() zos.Close() writer.Close() DLLは、参照に追加を行っています。 なにか解決法はありますか?
|