VictoriaFreSh 2022.1.8 → 2022.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/victoriafresh.rb +16 -8
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6d26d764e0e7243cad77fbf9b9bfa0ab0e3a622dd55df6d606d897cf79cf2ae
|
4
|
+
data.tar.gz: 5beff4aba458395347cb1c58ef5af643fc92b9061593571336ee73ad603b328e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02c1a6374fe1a446bcd471956fd31e96491826a7dbfe24249f8ffd0e5e6d5d07308dc68fa33334752af9b44a517fdba6e98c3ffcf05f8fface38bb14fd505528
|
7
|
+
data.tar.gz: 414857f4e1c24ce4a72350769661cdeef8a9f6c67d67e2d9a3c83e71d2b96b415c697ddf36b24b1d2f579ba2b7efe16a1e23a26eff9a489727b3955b8d780b88
|
data/lib/victoriafresh.rb
CHANGED
@@ -28,6 +28,7 @@ class VictoriaFresh
|
|
28
28
|
@externalDataFile={} #外部数据文件对象
|
29
29
|
@nextFileIdToUse=1 # 下一个要用的文件编号。
|
30
30
|
@md5FileIdMap={} # MD5 与文件编号之间的映射
|
31
|
+
@fileIdPathMap={} # 文件编号与它的实际路径之间的映射
|
31
32
|
end
|
32
33
|
|
33
34
|
# 计算文件内容的MD5。
|
@@ -72,15 +73,24 @@ class VictoriaFresh
|
|
72
73
|
def writeFileExternalDataFile(pathPrefix, packagedFile) #写入文件
|
73
74
|
timeObject=getTimeObject(packagedFile) #构造时间戳对象
|
74
75
|
|
75
|
-
|
76
|
-
|
77
|
-
victoriaFreshData=@externalDataFile.read(packagedFile['file_length']) #读取内容
|
76
|
+
is_duplicate=packagedFile['is_duplicate'] # 是否是重复文件。
|
77
|
+
|
78
78
|
|
79
|
-
#
|
80
|
-
|
79
|
+
if is_duplicate # 是重复文件。
|
80
|
+
sameFileId=packagedFile['same_file_id'] # 找到相同文件的编号。
|
81
|
+
|
82
|
+
sameFilePath=@fileIdPathMap[sameFileId] # 获取原始相同文件的路径。
|
83
|
+
|
84
|
+
victoriaFreshData=File.read(sameFilePath) # 读取原始相同文件的内容。
|
85
|
+
else # 不是重复文件。
|
86
|
+
@externalDataFile.seek(packagedFile['file_start_index']) #定位到起始位置
|
87
|
+
|
88
|
+
victoriaFreshData=@externalDataFile.read(packagedFile['file_length']) #读取内容
|
89
|
+
end # if is_duplicate # 是重复文件。
|
81
90
|
|
82
|
-
# pathToMake=pathPrefix + '/' + packagedFile.name #构造文件名
|
83
91
|
pathToMake=pathPrefix + '/' + packagedFile['name'] #构造文件名
|
92
|
+
|
93
|
+
@fileIdPathMap[fileId]=pathToMake # 记录文件编号与路径之间的映射。
|
84
94
|
|
85
95
|
begin
|
86
96
|
victoriaFreshDataFile=File.new(pathToMake , "wb", packagedFile['permission']) #数据文件。
|
@@ -95,8 +105,6 @@ class VictoriaFresh
|
|
95
105
|
elsif #带权限字段
|
96
106
|
File.chmod(permissionNumber, pathToMake) #设置权限
|
97
107
|
end #if (permissionNumber.nil?) #不带权限字段
|
98
|
-
|
99
|
-
|
100
108
|
rescue Errno::ENOENT # File not exist
|
101
109
|
puts "Rescued by Errno::ENOENT statement. #{pathToMake}" #报告错误
|
102
110
|
rescue Errno::EACCES # File permission error
|