6 mensajes Página 1 de 1
Aca las funciones que puse en el otro post para evitar que se lean muchos temas buscando las últimas:

function File.SplitBinary(filePath, folderPath, size, CallbackFunction)
        local fileSize = File.GetSize(filePath);
        local fileName = String.SplitPath(filePath).Filename..String.SplitPath(filePath).Extension..".";
        local realpart = io.open(filePath, "rb");
        local size = size*(2^20);
        if fileSize < size then
                return -1, "Split size can't be greater than filesize";
        end
        local r = fileSize%size;
        local n = (r==0) and math.floor((fileSize/size)) or math.floor((fileSize/size))+1;
        for x=1, n do
                        if CallbackFunction ~= nil then
                                CallbackFunction(x, n, math.floor((x/n)*100, 0));
                        end
                        local cfileName = string.format("%0"..#tostring(n).."d",  x);
                        local curFile = io.open(folderPath.."\\"..fileName..cfileName, "wb");
                        local bytes = (x<n) and size or (x==n) and (r~=0) and r or size;
                        local curPart = realpart:read(bytes);
                        curFile:write(curPart);
                        curFile:close();
        end
        realpart:close();
        return 0, "Success: File splitted in "..n.." parts";
end

function File.JoinBinary(FilePath, OutPath, call)
        local counter = 1;
        local buffer = 2^12;
        if not File.DoesExist(FilePath) then
                return -1, "File doesn't exist";
        end
        local tAt = String.SplitPath(FilePath);
        local sF = (String.SplitPath(OutPath).Extension~= "") and OutPath or OutPath.."\\"..tAt.Filename;
        local fileout, state_msg = io.open(sF, "ab");
        if not fileout or state_msg then
                return -1, "Couldn't open destination file";
        end
        local sD = tAt.Drive..tAt.Folder..tAt.Filename
        local n = 1;
        while true do
                if not File.DoesExist(sD.."."..string.format("%0"..(#tAt.Extension-1).."d", n)) then
                        break;
                else
                        n = n + 1;
                end
        end
        n = n-1;
        while true do
                if call then
                        local a = call(counter, n);
                        if not a then return -1, "Process cancelled by user" end
                end
        local sFile = sD.."."..string.format("%0"..(#tAt.Extension-1).."d", counter);
                if not File.DoesExist(sFile) then
                        break;
                else
                        local filesize = File.GetSize(sFile);
                        local filesource, state_msg = io.open(sFile, "rb");
                        if not filesource or state_msg or filesize <= 1 then
                                fileout:close();
                                return -1, "Couldn't open source file: "..sFile;
                        else
                                while true do
                                        local block = filesource:read(buffer);
                                        if not block then
                                                break;
                                        end
                                        fileout:write(block);  
                                end
                        end
                        if filesource then
                                filesource:close();
                        end
            counter = counter+1;
                end
        end
        fileout:close();
        return 0, "Success";
end
Parsed in 0.007 seconds, using GeSHi 1.0.8.9


Ejemplos de como llamarlas:

local code, msg = File.SplitBinary(_SourceFolder.."\\mp3.mp3", _SourceFolder.."\\test", 1, nil);
Dialog.Message("Result", "Return code: "..code..", Msg: "..msg);
local code, msg = File.JoinBinary(_SourceFolder.."\\test\\mp3.mp3.01", _SourceFolder.."\\prueba.mp3") ;
Dialog.Message("Result", "Return code: "..code..", Msg: "..msg);
Parsed in 0.002 seconds, using GeSHi 1.0.8.9
gracias!!
gracias!
good  thanks
Imagen
muy bueno, pero seria mejor un APZ

¿? :hypno: ¿?
Para qué quieres un APZ, el código está ahí arriba solo debe de comprenderlo y usarlo en su proyecto.
Imagen
6 mensajes Página 1 de 1

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron