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

  1. anza kupakua mkondo kwenye kifaa cha kwanza
  2. subiri hadi ROM ijazwe
  3. sitisha upakuaji
  4. kuhamisha faili kwenye kifaa cha pili na kuongeza nambari kwa jina la faili
  5. 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:

  1. Kusoma sehemu zote mara moja
  2. 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.

--]]
                    local start_index = out_part:find(" ", find_index, true)
                    find_index = start_index + #zero_string

--[[

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.

Imetumika:

  1. Kiteja cha mafuriko kwenye kompyuta kibao.
  2. Mteja wa Torrent qBittorent kwenye PC.
  3. Hati ya Lua

Chanzo: mapenzi.com

Kuongeza maoni