ProHoster > blog > Utawala > Inapakua mkondo wa 16GB kupitia kompyuta kibao iliyo na 4GB ya nafasi ya bure
Inapakua mkondo wa 16GB kupitia kompyuta kibao iliyo na 4GB ya nafasi ya bure
Kazi:
Kuna PC bila mtandao, lakini inawezekana kuhamisha faili kupitia USB. Kuna kompyuta kibao iliyo na Mtandao ambayo faili hii inaweza kuhamishwa. Unaweza kupakua mkondo unaohitajika kwenye kompyuta yako kibao, lakini hakuna nafasi ya kutosha ya bure. Faili kwenye mkondo ni moja na kubwa.
Njia ya suluhisho:
Nilianza mkondo kupakua. Nafasi ya bure ilipokaribia kutoweka, nilisitisha upakuaji. Niliunganisha kibao kwenye PC na kuhamisha faili kutoka kwa kibao hadi kwenye PC. Nilinyamaza na kwa mshangao faili likaundwa tena na kijito kiliendelea kupakua kana kwamba hakuna kilichotokea.
Kwa sababu ya ukweli kwamba mteja wa torrent huweka bendera ndogo kwa faili ambayo huandika data iliyopokelewa, mfumo haujaribu kuhifadhi 16GB mara moja na hitilafu haitatokea wakati wa kujaribu kuandika kwa faili zaidi ya 4GB.
Baada ya kurudia utaratibu mara nne, nilipokea faili nne kwenye PC yangu zilizo na sehemu tofauti za kijito kimoja. Sasa kilichobaki ni kuziweka pamoja. Utaratibu kimsingi ni rahisi. Unahitaji kubadilisha baiti sifuri na thamani nyingine ikiwa iko katika nafasi fulani katika moja ya faili nne.
Ilionekana kwangu kuwa programu rahisi kama hiyo inapaswa kuwa kwenye mtandao. Je, hakuna mtu aliyewahi kukutana na tatizo kama hilo? Lakini niligundua kuwa sijui hata maneno muhimu ya kutafuta. Kwa hivyo, nilitengeneza hati ya Lua kwa kazi hii haraka na sasa nimeiboresha. Hiki ndicho ninachotaka kushiriki.
Inapakua mkondo katika sehemu
anza kupakua mkondo kwenye kifaa cha kwanza
subiri hadi ROM ijazwe
sitisha upakuaji
kuhamisha faili kwenye kifaa cha pili na kuongeza nambari kwa jina la faili
tunarudi kwenye hatua ya kwanza mpaka faili itapakuliwa kabisa
Kuunganisha sehemu katika faili moja
Baada ya sehemu ya mwisho kupokelewa, ni muhimu kuzikusanya kwenye faili moja nzima.
Kazi ni rahisi:
Kusoma sehemu zote mara moja
Ikiwa katika sehemu fulani nafasi sio byte ya sifuri, basi tunaandika kwa pato, vinginevyo tunaandika sifuri
Kazi merge_part inakubali safu ya nyuzi streams_in ambayo inasoma sehemu ya saizi buffer_length na inarudisha matokeo ya kuunganisha sehemu kutoka kwa nyuzi tofauti.
function merge_part(streams_in, buffer_length)
local out_part
for _, stream in ipairs(streams_in) do
local in_part = stream:read(buffer_length)
if not out_part then
out_part = in_part -- просто копируем часть из первого файла
elseif in_part and #in_part > 0 then
if #out_part < #in_part then
out_part, in_part = in_part, out_part
end
if out_part ~= in_part -- данные различаются
and in_part:find("[^ ]") -- есть данные в in_part
and out_part:find(" ", 1, true) -- есть пустые места в out_part
then
local find_index = 1
--[[
Kazi string.gsub inafaa kwa kazi hiyo kwa sababu itapata vipande vilivyojaa sifuri na kutoa kile kilichopewa.
--]]
out_part = out_part:gsub(" +", function(zero_string)
if #in_part < find_index then
return -- не на что менять
end
--[[
string.gsub haitoi nafasi ambayo mechi ilipatikana. Kwa hiyo, tunafanya utafutaji sambamba kwa nafasi zero_string kutumia kipengele string.find. Inatosha kupata byte ya kwanza ya sifuri.
Sasa ikiwa ndani in_part kuna data kwa out_part nakala yao.
--]]
if #in_part >= start_index then
local end_index = start_index + #zero_string - 1
--[[
Kata kutoka in_part sehemu inayolingana na mlolongo wa sifuri.
--]]
local part = in_part:sub(start_index, end_index)
if (part:byte(1) ~= 0) or part:find("[^ ]") then
--[[
В part kuna data.
--]]
if #part == #zero_string then
return part
else
--[[
part iligeuka kuwa chini ya mlolongo wa sufuri. Hebu tuongeze pamoja nao.
--]]
return part..zero_string:sub(1, end_index - #in_part)
end
end
end
end)
end
end
end
return out_part
end
Hitimisho
Kwa hivyo, tuliweza kupakua na kukusanya faili hii kwenye Kompyuta. Baada ya kuunganishwa, nilitoa faili ya torrent kutoka kwa kibao. Niliweka mteja wa torrent kwenye PC yangu na kuangalia faili nayo.
Sehemu ya mwisho iliyopakuliwa kwenye kompyuta kibao inaweza kushoto kwenye usambazaji, lakini unahitaji kuwezesha kuangalia tena sehemu kabla ya hili na usifute faili ili isipakue tena.