VB.Net如何将压缩文本文件直接读入字符串数组

时间:2012-03-23 19:01:00

标签: vb.net file-io zipfile

是否可以像普通文本文件一样读取压缩文本文件而不必先将其解压缩,如果是这样,怎么做?目前,我必须提取文件,将所有行读取到一个字符串数组,然后删除提取的文件。

Dim arrLines() As String
Try
    oApp.Namespace(Application.StartupPath).CopyHere(oApp.Namespace(strZipFilename).Items.Item(CStr(filename)))
    arrLines = IO.File.ReadAllLines(Application.StartupPath & "\" & filename)
    Dim FSO = CreateObject("Scripting.FileSystemObject")
    FSO.DeleteFile(Application.StartupPath & "\" & filename)
Catch ex As Exception
    Return False
End Try
'do stuff with arrLines...

我宁愿不需要这样做。如果有人可以告诉我如何在不使用第三方库的情况下执行IO.File.ReadAllLines(oApp.Namespace(strZipFilename).Items.Item(CStr(filename)))之类的操作,我会非常感激。

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式实现这一目标:

  1. 添加System.IO.Comression和System.IO.Compression.FileSystem
  2. 的引用
  3. 添加System.IO.Compression的导入
  4. 然后,您可以使用以下代码将内容读取到文件并将其存储到字符串变量中。在这个特定的例子中,我将压缩文件名“File1.txt”存储在主窗体(tbFile)的文本框中,并且我将压缩文件的内容显示在主窗体上的文本框(tb1)中。

    Private Sub bRead_Click(sender As Object, e As EventArgs) Handles bRead.Click
        Try
            Using archive As ZipArchive = Compression.ZipFile.Open(zipDest, ZipArchiveMode.Read)
                Dim entry As ZipArchiveEntry = archive.GetEntry(tbFile.Text)
                Dim s As String = ""
                Using sr As StreamReader = New StreamReader(entry.Open())
                    s = sr.ReadToEnd()
                End Using
                tb1.Text = s
            End Using
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub