class Object

Public Instance Methods

checkMemoryUsage(lineNumber) click to toggle source
# File lib/extremeunzip.zzaqsu.rb, line 10
def checkMemoryUsage(lineNumber)
            mem = GetProcessMem.new

            puts("#{lineNumber} ,  Memory: #{mem.mb}"); # Debug
end
extractVfsDataWithVersion(wholeCbor, fileVersion) click to toggle source
# File lib/extremeunzip.zzaqsu.rb, line 68
def extractVfsDataWithVersion(wholeCbor, fileVersion) # 根据版本号,提取VFS数据内容
    victoriaFreshData = '' # 解压后的数据块整体

    if (fileVersion == 14) # 14版本
        compressedVfsData = wholeCbor['vfsData'] # 获取压缩后的数据内容

        victoriaFreshData = LZMA.decompress(compressedVfsData) # 解压缩数据内容
    elsif (fileVersion >= 30) # 30以上版本
        compressedVfsDataList = wholeCbor['vfsDataList'] # 获取压缩后的数据块列表

        puts("data block amont: #{compressedVfsDataList.length}") # Debug

        dataBlockCounter = 0 # Data block counter

        compressedVfsDataList.each do |currentCompressed| # 一块块地解压
            puts("data block counter: #{dataBlockCounter}") # Debug
            checkMemoryUsage(34)

            currentRawData = LZMA.decompress(currentCompressed) # 解压这一块

            #             victoriaFreshData=victoriaFreshData+currentRawData #追加
            victoriaFreshData << currentRawData # 追加

            puts("byte size: #{victoriaFreshData.bytesize}") # debug.

            dataBlockCounter += 1 # count
        end # compressedVfsDataList.each do |currentCompressed|
    end # if (fileVersion==14) #14版本

    victoriaFreshData # 返回解压后的数据块整体
end
extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion) click to toggle source

根据版本号,提取VFS数据内容

# File lib/extremeunzip.zzaqsu.rb, line 17
def extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion)
    victoriaFreshData = '' # 解压后的数据块整体
    dataFileName = 'victoriafreshdata.w' # 数据文件名
    dataFile = {} # 数据文件对象

    if (fileVersion == 14) # 14版本
        compressedVfsData = wholeCbor['vfsData'] # 获取压缩后的数据内容

        victoriaFreshData = LZMA.decompress(compressedVfsData) # 解压缩数据内容

        dataFile = File.open(dataFileName, 'wb') # 打开文件

        dataFile.syswrite(victoriaFreshData) # 写入内容

        dataFile.close # 关闭文件
    elsif (fileVersion >= 30) # 30以上版本
        compressedVfsDataList = wholeCbor['vfsDataList'] # 获取压缩后的数据块列表

        puts("data block amont: #{compressedVfsDataList.length}") # Debug

        dataBlockCounter = 0 # Data block counter

        dataFile = File.open(dataFileName, 'wb') # 打开文件

        compressedVfsDataList.each do |currentCompressed| # 一块块地解压
            puts("data block counter: #{dataBlockCounter}") # Debug
            checkMemoryUsage(34)

            begin # 解压
                currentRawData = LZMA.decompress(currentCompressed) # 解压这一块
                

                dataFile.syswrite(currentRawData) # 写入内容
            rescue RuntimeError => e # 解压失败
                puts "Warning: the exz file may be incomplete." # 报告错误。文件可能不完整。
            end # begin # 解压

            #             victoriaFreshData=victoriaFreshData+currentRawData #追加
            #             victoriaFreshData << currentRawData #追加

            #puts("byte size: #{victoriaFreshData.bytesize}") # debug.

            dataBlockCounter += 1 # count
        end # compressedVfsDataList.each do |currentCompressed|

        dataFile.close # 关闭文件
    end # if (fileVersion==14) #14版本

    dataFileName # 返回解压后的数据块整体
end