Top Level Namespace

Defined Under Namespace

Classes: ExtremeUnZip, ExtremeZip

Instance Method Summary collapse

Instance Method Details

#checkMemoryUsage(lineNumber) ⇒ Object



12
13
14
15
16
# File 'lib/extremezip.zzaqsv.rb', line 12

def checkMemoryUsage(lineNumber)
    mem = GetProcessMem.new

    puts("#{lineNumber} ,  Memory: #{mem.mb}, process id: #{Process.pid}"); # Debug
end

#extractVfsDataWithVersion(wholeCbor, fileVersion) ⇒ Object

def extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# 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) ⇒ Object

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



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 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