Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionvar NewFile : TFileStream; OldFile : TFileStream; begin ... OldFile := TFileStream.Create(OldFileName, fmOpenRead or fmShareDenyWrite); try NewFile := TFileStream.Create(NewFileName, fmCreate or fmShareDenyRead); try NewFile.CopyFrom(OldFile, OldFile.Size); finally FreeAndNil(NewFile); end; finally FreeAndNil(OldFile); end;
Comme te l'a expliqué Bacterius, la lecture et l'écriture de données est alors beaucoup plus rapide.
FichierFlux := TFileStream.Create(TElementListe(Liste.Items[compteur]^) .sourcefichier, fmOpenRead); // Crée une instance de TFileStream, "fmOpenRead" permet d'ouvrir le fichier en lecture seule FFlux := TFileStream.Create(dest, fmOpenWrite or fmCreate); // "fmOpenWrite" ouvre le fichier en écriture seulement (remplace le contenu), "fmCreate" permet de créer le fichier si il n'existe pas try Readed := -1; lelabel.Caption := ObtenirNomfichier(PElementListe(Liste[compteur]) .sourcefichier); laprogressbar.Min := 0; laprogressbar.Step := round(sizeof(Buffer)/1000); laprogressbar.Max := round(FichierFlux.Size/1000); while (FFlux.Position < FichierFlux.Size) and not(Readed = 0) Do begin // fichierflux.Size/sizeof(buffer) Readed := FichierFlux.Read(Buffer, sizeof(Buffer)); Writed := FFlux.Write(Buffer, Readed); laprogressbar.stepit; end; // FFlux.CopyFrom(FichierFlux,FichierFlux.Size); // FFlux.CopyFrom(FichierFlux,FichierFlux.Size); //Copie le fux "FichierFlux" vers un autre flux "FFlux" finally laprogressbar.Position := FichierFlux.Size; FichierFlux.Free; // Libère le flux FFlux.Free; end;
doit je continuer a essayer d'exploiter le file mapping pour espér un gain de temps en résumé?