注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mr. almost

Never mind,live goes on.On my way again.

 
 
 

日志

 
 

VB.Net的两种压缩文件的方法  

2010-08-26 11:17:14|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

方法一:此方法要求机器上安装有winRar软件,我们通过shell来借用他的功能达到压缩文件的效果。

代码如下:

        Dim DeliveryF As String = Server.MapPath("..\Temp\DeliveryFactors.xls")         '原始文件   (压缩前)
        Dim TruckInfo As String = Server.MapPath("..\Temp\TruckInformation.xls")
        Dim QDetail As String = Server.MapPath("..\Temp\QuotationDetail.xls")

 

        '用shell命令调用winrar.exe创建压缩文件()
        Dim winRarexe As String = "C:\Program Files\WinRAR\Rar"         'winzip   执行文件的位置
        Dim wtarget As String = "C:\temp\QuotationVAComparsion.zip"     '目地文件   (压缩后)
        Dim command As String = winRarexe & " a " & wtarget & " " & DeliveryF & " " & TruckInfo & " " & QDetail

        '这个命令你可以查看winrar的命令集


        Dim retval As Double     'Shell   指令传回值
        retval = Shell(command, AppWinStyle.MinimizedFocus)


         '因为shell后面的语句是不会等到shell结束后在执行,如果后面要用到压缩文件,而文件还没压缩完,就会出现错误,这里用sleep延

         '缓一下程序的执行,时间多少自己看情况定(这个方法是后漏洞的,你可以查看如何判断shell执行结束的方法,本人没有找到)

         Thread.Sleep(2500)   

        ...............后面的语句

 

 

方法二:这个方法要添加引用vjslib,因为用到里面的方法。aFilePath是要压缩文件的所在文件夹路径,压缩时会把文件夹内的所有文件压缩,当然你也可以逐个添加文件来压缩,看过代码你就知道怎样做了,aArchiveName是zip文件的路径

        Private Sub Zipper(ByVal aFilePath As String, ByVal aArchiveName As String)
        Dim zipPath As String = aArchiveName
        Dim filePaths As New ArrayList()
        Dim aFileList() As String = Directory.GetFileSystemEntries(aFilePath)
        For Each FileName As String In aFileList
            filePaths.Add(FileName)
        Next
        Dim fos As New java.io.FileOutputStream(zipPath)
        Dim zos As New java.util.zip.ZipOutputStream(fos)
        Dim file As String
        For Each file In filePaths
            Dim f As String = System.IO.Path.GetFileName(file)
            'Dim f As String = file.Remove( _
            '     0, System.IO.Path.GetPathRoot(file).Length)
            'f = f.Replace("\", "/")
            Dim ze As New java.util.zip.ZipEntry(f)
            ze.setMethod(java.util.zip.ZipEntry.DEFLATED)
            zos.putNextEntry(ze)
            Dim fis As New java.io.FileInputStream(file)
            Dim buffer(8191) As System.SByte
            While True
                Dim len As Integer = fis.read(buffer, 0, buffer.Length)
                If len <= 0 Then
                    Exit While
                End If
                zos.write(buffer, 0, len)
            End While
            fis.close()
            zos.closeEntry()
        Next file
        zos.close()
        fos.close()
    End Sub

 

方法二来自:http://hi.baidu.com/skywaitforyou/blog/item/cf94f401215f78e509fa9345.html

  评论这张
 
阅读(693)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018