用于压缩文件或目录的VB.NET类文件

本文用于使用vb.net压缩文件或目录。 压缩文件的类和方法在java.io,java.util,java.util.zip类库中可用。要导入这些类和方法,必须在.net组件中添加参考vsjlib库。

.NET类:


Imports System.IO
Imports java.io
Imports java.util
Imports java.util.zip 
介绍

本文用于以简单的方式创建一个zip文件。

您要做的只是为我在下面编写的类创建一个对象,然后调用过程CreateZipFile(FolderToZip)或CreateZipFile(FileToZip)。

压缩文件或目录的类

Imports System.IO
Imports java.io
Imports java.util
Imports java.util.zip 
Public Class clsZip 
   Public Sub CreateZipFile(ByVal sPath As String)
       Dim fos As java.io.FileOutputStream
       Dim zos As java.util.zip.ZipOutputStream
       Dim di As System.IO.DirectoryInfo 
       'check , is it a file existing in this path,   if true then zip a file
       If System.IO.File.Exists(sPath) Then
           Dim fInfo As New FileInfo(sPath) 
           'create a zip file with same name in the same path
           fos = New java.io.FileOutputStream(sPath.Replace(fInfo.Extension, ".zip"))
           zos = New java.util.zip.ZipOutputStream(fos) 
           'procedure to zip one File
           ZipOneFile(fos, zos, sPath) 
           'check , is it a directory existing in this path,if true then zip a directory
       ElseIf System.IO.Directory.Exists(sPath) Then 
           'create a zip file with same name in the same path
           fos = New java.io.FileOutputStream(sPath & ".zip")
           zos = New java.util.zip.ZipOutputStream(fos)
           di = New System.IO.DirectoryInfo(sPath) 
           'procedure to zip a directory
           ZipDirectory(fos, zos, di, sPath)
       End If  
       zos.close()
       fos.close()
       zos.flush()
       fos.flush()
   End Sub 
   Private Sub ZipDirectory(ByVal fos As java.io.FileOutputStream, ByVal zos As java.util.zip.ZipOutputStream, ByVal di As System.IO.DirectoryInfo, ByVal SRootDir As String)
       Dim fis As java.io.FileInputStream
       Dim ze As java.util.zip.ZipEntry 
       'to get file info from the directory
       Dim fInfos As System.IO.FileInfo() = di.GetFiles
       Dim fInfo As System.IO.FileInfo 
       For Each fInfo In fInfos
           'give the zip entry or the folder arrangement for the file
           ze = New java.util.zip.ZipEntry(fInfo.FullName.Substring(SRootDir.LastIndexOf("\"))) 
           'The DEFLATED method is the one of the methods to zip a file
           ze.setMethod(ze.DEFLATED)
           zos.putNextEntry(ze) 
           'Input stream for the file to zip
           fis = New java.io.FileInputStream(fInfo.FullName) 
           'Copy stream is a simple method to read a file input stream (file to zip) and write it to a file output stream(new zip file)
           CopyStream(fis, zos) 
           zos.closeEntry()
           fis.close()
       Next 
       'If the directory contains the sub directory the call the same procedure
       Dim dinfos As System.IO.DirectoryInfo() = di.GetDirectories()
       Dim dinfo As System.IO.DirectoryInfo
       For Each dinfo In dinfos
           ZipDirectory(fos, zos, dinfo, SRootDir)
       Next 
   End Sub 
   Private Sub ZipOneFile(ByVal fos As java.io.FileOutputStream, ByVal zos As java.util.zip.ZipOutputStream, ByVal sFullName As String)
       Dim fis As java.io.FileInputStream
       Dim ze As java.util.zip.ZipEntry
       'give the zip entry or the folder arrangement for the file
       ze = New java.util.zip.ZipEntry(sFullName.Substring(sFullName.LastIndexOf("\")))
       'The DEFLATED method is the one of the methods to zip a file
       ze.setMethod(ze.DEFLATED)
       zos.putNextEntry(ze)
       'Input stream for the file to zip
       fis = New java.io.FileInputStream(sFullName)
       'Copy stream is a simple method to read a file input stream (file to zip) and write it to a file output stream(new zip file)
       CopyStream(fis, zos)
       zos.closeEntry()
       fis.close()
   End Sub 
   Private Sub CopyStream(ByVal src As java.io.FileInputStream, ByVal dest As java.util.zip.ZipOutputStream)
       Dim reader As New java.io.InputStreamReader(src)
       Dim writer As New java.io.OutputStreamWriter(dest)
       While reader.ready
           writer.write(reader.read)
       End While
       writer.flush()
   End Sub  
End Class

调用该程序以压缩文件

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim obj As New clsZip
      obj.CreateZipFile(TextBox1.Text)
       MsgBox("New Zip file is created for " & TextBox1.Text, MsgBoxStyle.Information, "Zip File")    
End Sub

逐步过程

1.创建一个新的vb.net项目

2.创建一个类clsZip

3.复制代码CLASS到ZIP文件或目录

4.在解决方案资源管理器->“参考”中,右键单击,

在.Net库标签页中选择vsjlib库。

5.参见示例调用压缩文件的过程

谢谢

桑迪亚

From: https://bytes.com/topic/net/insights/753394-vb-net-class-file-zip-file-directory

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值