Entwickler-Ecke
Internet / Netzwerk - Datei donwload - nur im RAM halten statt auf HDD speichern
schismatic - Di 26.05.09 09:56
Titel: Datei donwload - nur im RAM halten statt auf HDD speichern
Morgen!
Ich habe hier ein (hoffentlich einfaches) Problem zu dessen Lösung mir jedoch keinerlei Wissen zur verfügung steht.
Mein kleines Tool das ich geschrieben habe lädt aktuell eine Datei aus dem Internet herunter und speicher diese auf der Festplatte. Jedoch wäre es mir wesentlich lieber wenn die Datei nur im Arbeitsspeicher für die Dauer des downloads gehalten wird und anschließend gelöscht wird. Da ich etwa mit 1.000 Downloads die Woche rechne wäre es wohl nicht besonders schonend für die Festplatte immmer und immer wieder auf der gleichen Stelle herumzuschreiben :)
Hier der Code den ich für den Download benutze:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure DownloadFile(URL, DestinationFile, Username, Password : string); var FileStream: TFileStream; HTTP : TIdHTTP; begin FileStream := TFileStream.Create(DestinationFile, fmCreate); HTTP := TIdHTTP.Create; HTTP.Request.BasicAuthentication := true; HTTP.Request.Username := Username; HTTP.Request.Password := Password; HTTP.HandleRedirects := true; HTTP.Get(URL, FileStream); HTTP.Free; FileStream.Free; end; |
Wie man sieht wird zuerst eine Datei auf auf der Festplatte erstellt (DestinationFile) und anschließend beginnt der Download.
Kann ich das nun irgendwie abändern das es wie gesagt nur im Arbeitsspeicher gehalten wird und nach dem Download wieder gelöscht wird?
Xentar - Di 26.05.09 10:16
Wenn eine Festplatte nach 1000 Schreibzyklen pro Woche auseinanderfällt, hat sie es nicht anders verdient.. :D
Einige allgemeine Dinge zu deinem Quellcode:
- Wieso downloadest du was, nur um es hinterher wieder zu löschen? Klingt ein wenig nach Statistik pushen ;)
- Schau dir mal try..finally..end an
Und zu deiner Frage:
Wenn ein TFileStream eine Datei schreibt, was könnte man wohl nehmen, wenn der Stream nur im Speicher bleiben soll?
Narses - Di 26.05.09 10:16
Moin und :welcome: im Forum!
schismatic hat folgendes geschrieben : |
| Da ich etwa mit 1.000 Downloads die Woche rechne wäre es wohl nicht besonders schonend für die Festplatte immmer und immer wieder auf der gleichen Stelle herumzuschreiben |
Wenn du sowas vermeiden willst, dann solltest du besser nie wieder ein Betriebssystem (z.B. Windows) von Platte booten... :rofl:
schismatic hat folgendes geschrieben : |
| Kann ich das nun irgendwie abändern das es wie gesagt nur im Arbeitsspeicher gehalten wird und nach dem Download wieder gelöscht wird? |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure DownloadFile(URL, DestinationFile, Username, Password : string); var temp: String; HTTP : TIdHTTP; begin HTTP := TIdHTTP.Create; HTTP.Request.BasicAuthentication := true; HTTP.Request.Username := Username; HTTP.Request.Password := Password; HTTP.HandleRedirects := true; temp := HTTP.Get(URL); HTTP.Free; end; |
Das sollte es schon sein. ;) Was man auch selbst rausfindet, wenn man mal ein bischen die Methodenliste durchgeblättert hätte... :roll: :zwinker:
cu
Narses
schismatic - Di 26.05.09 10:23
Ach menno :D
Ich danke Euch für den Hinweis. Statistik pushen kommt tatsächlich fast hin, hat jedoch nur für mich eine Bedeutung und sonst keinerlei Auswirkungen ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!