Salut, je veux construire un aspirateur multithread, pour ce faire il faut travailler avec des threads, tel que chacun télécharge une partie du fichier, ce fichier doit être découpé en morceaux, la question qui tourne dans ma tête c'est est-ce-que c'est le développeur qui doit découper ce fichier et mettre ses parties sur le serveur ou bien c'est l'application elle même qui s'en charge, en tout cas j'ai trouvé une procédure qui réalise ceci :
Mais je crois pas que je peux utiliser cette procédure avec un fichier distant (sur serveur) ! Alors est-il possible de découper un fichier qui se trouve sur un serveur distant pour faire un téléchargement multithread? si oui, comment procéder? ( je pense que c'est le cas de IDM). Et merci pour me répondre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 procedure SplitFile(FileName : TFileName; SizeofFiles : integer; ;outputfolder : string) ; //la aussi on le declare !! var i : Word; fs, sStream: TFileStream; SplitFileName: string; begin if outputfolder[length(outputfolder)]<>'\' then outputfolder:=outputfolder+'\'; //la on rajoute le '\' au cas ou il y est pas, pour pas avoir de probleme fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try for i := 1 to Trunc(fs.Size / SizeofFiles) + 1 do begin SplitFileName := outputfolder+ExtractFileName(FileName)+ '.'+ FormatFloat('000', i); //et c'est la que l'on donne un nom au nouveau fichier... sStream := TFileStream.Create(SplitFileName, fmCreate or fmShareExclusive); try if fs.Size - fs.Position < SizeofFiles then SizeofFiles := fs.Size - fs.Position; sStream.CopyFrom(fs, SizeofFiles); finally sStream.Free; end; end; finally fs.Free; end; end;
Partager