簡體   English   中英

讀取和編輯 gzip 文件的內容?

[英]Read and edit the contents of a gzip file?

我正在嘗試讀取和編輯 gzip 文件中的文件。 我可以使用 .zip 文件執行此操作,但在嘗試讀取 .gzip 文件時出現錯誤。 到目前為止的搜索結果只談論壓縮或解壓縮.gzip 文件。 如果是相對的,.gzip 文件(根據文件屬性)實際上有一個“.dat”擴展名。 我需要在其中編輯的文件沒有任何擴展名。

        Using archive As ZipArchive = Compression.ZipFile.Open(Path.Combine(SelectedWorld, "level.dat"), ZipArchiveMode.Update)
            Dim entry As ZipArchiveEntry = archive.GetEntry("level")
            Dim s As String = ""
            Using sr As New StreamReader(entry.Open())
                s = sr.ReadToEnd()
            End Using
            Dim M As Match = Regex.Match(s, "LevelName")
            If M.Success Then
                MsgBox(M.Value)
            'edit word after "LevelName"  <<I'm going to need help with this too.
            End If
        End Using

上面的代碼拋出以下錯誤:

System.IO.InvalidDataException:“找不到中央目錄記錄的結尾。”

嘗試以下似乎沒有正確的東西來讀取/修改文件。

Using archive As IO.Compression.GZipStream = IO.Compression.GZipStream

我發現幾乎沒有其他方法可以處理這些類型的文件。 任何幫助將不勝感激。

gzip 文件不是 zip 文件。 完全不同的兩件事。 關於找不到中央目錄結束記錄的錯誤僅在 zip 文件中發現。

zip 文件是一個存檔,其中存儲的文件是獨立壓縮的。 這允許刪除和添加一些文件而不必重新壓縮其他文件。 盡管需要復制整個內容才能移動內容。

一個 gzip 文件只存儲一個壓縮文件。 如果你想編輯那個文件,那么簡單地 gunzip 它,編輯它,然后重新 gzip 它。

通常 gzip 文件中的一個壓縮文件本身就是許多文件的未壓縮 tar 存檔。 文件的擴展名為 .tar.gz。 如果你想編輯 tar 存檔,你會再次 gunzip 它得到一個.tar 文件,用 tar 命令編輯它,它可以刪除和 append 個文件,然后重新 gzip 它。

我讓它工作使用:

Imports Cyotek.Data.Nbt
    NewName = InputBox("Enter New Name")
    Dim MyFile As String = Path.Combine(SelectedWorld, "level.dat")
    Dim document As NbtDocument = NbtDocument.LoadDocument(MyFile)
    Dim root As TagCompound = document.DocumentRoot
    root.Name = "Data"
    Dim TC As TagCompound = root.GetCompound("Data")
    Dim MyTag As Tag = TC.GetTag("LevelName")
    MyTag.SetValue(NewName)
    document.Save(MyFile)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM