| Autor |
Nachricht |
Le Fox
Unregistrierter
|
Le Fox Unregistrierter
21:22:11 12.08.2012 Titel: |
Temp Datei erstellen |
Zitieren |
Hallo Leute,
wollte einmal euren Rat einholen, wie ich ganz easy eine Temp Datei mit einer bestimmten Größe erstellen kann.
Das einfachste war für mich eine Datei zu öffnen und mit einer for-Schleife die gewünschte Menge an 0 bytes rein zu schreiben.
An sich ist es ja einfach, aber ist echt unschön zich tausende male die schleife durchlaufen zu lassen. Daher wollte ich fragen ob es schon etwas fertiges gibt, dass dieses übernimmt. |
|
|
|
 |
Swordfish
Mitglied
Benutzerprofil
Anmeldungsdatum: 27.03.2005
Beiträge: 4155
|
Swordfish Mitglied
21:28:59 12.08.2012 Titel: |
Re: Temp Datei erstellen |
Zitieren |
| Le Fox schrieb: | | [...] eine Temp Datei mit einer bestimmten Größe erstellen [...] |
Wozu soll das gut sein? |
|
|
|
 |
Sone
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.05.2012
Beiträge: 3142
|
Sone Mitglied
21:34:24 12.08.2012 Titel: |
Re: Temp Datei erstellen |
Zitieren |
| Le Fox schrieb: | Hallo Leute,
wollte einmal euren Rat einholen, wie ich ganz easy eine Temp Datei mit einer bestimmten Größe erstellen kann.
Das einfachste war für mich eine Datei zu öffnen und mit einer for-Schleife die gewünschte Menge an 0 bytes rein zu schreiben.
An sich ist es ja einfach, aber ist echt unschön zich tausende male die schleife durchlaufen zu lassen. Daher wollte ich fragen ob es schon etwas fertiges gibt, dass dieses übernimmt. |
| C++: | std::ostream stream("MeineDatei");
stream << std::string(5000, '\0'); | |
Dadurch erübrigt sich aber nicht Schwertfisch's Frage. |
_________________ You want to do X, and you think Y is the best way of doing so. Instead of asking about X, you ask about Y. | Wenn man was zum Lachen braucht: Why C++ Sucks
|
|
 |
Le Fox
Unregistrierter
|
Le Fox Unregistrierter
21:34:49 12.08.2012 Titel: |
|
Zitieren |
Zum beispiel bei einem Filetransfer. Wenn die Parts von der Datei nicht in der richtigen Reihenfolge sind, dann schreibe ich den gerade erhaltenen Teil an die stelle wo er hingehört und nicht einfach an die nächste stelle. Kann zwar alles natürlich im im Ram auslagern, möchte ich aber nicht - wehe es kommen mal große Daten. |
|
|
|
 |
Sone
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.05.2012
Beiträge: 3142
|
Sone Mitglied
21:36:56 12.08.2012 Titel: |
|
Zitieren |
| Le Fox schrieb: | | Zum beispiel bei einem Filetransfer. Wenn die Parts von der Datei nicht in der richtigen Reihenfolge sind, dann schreibe ich den gerade erhaltenen Teil an die stelle wo er hingehört und nicht einfach an die nächste stelle. Kann zwar alles natürlich im im Ram auslagern, möchte ich aber nicht - wehe es kommen mal große Daten. |
??? Wovon redest du? |
_________________ You want to do X, and you think Y is the best way of doing so. Instead of asking about X, you ask about Y. | Wenn man was zum Lachen braucht: Why C++ Sucks
|
|
 |
Christoph
Moderator
Benutzerprofil
Anmeldungsdatum: 30.04.2001
Beiträge: 5945
|
Christoph Moderator
21:45:07 12.08.2012 Titel: |
|
Zitieren |
| Le Fox schrieb: | | Zum beispiel bei einem Filetransfer. Wenn die Parts von der Datei nicht in der richtigen Reihenfolge sind, dann schreibe ich den gerade erhaltenen Teil an die stelle wo er hingehört und nicht einfach an die nächste stelle. | Dann mach das doch einfach direkt. Dafür musst du die Datei nicht vorher unnötig aufblasen. In C geht das mit der Funktion fseek(), in C++ mit seekg von fstream.
Also konkret sieht das so aus: Du öffnest eine leere Datei und wenn du dann einen Datenblock an die Stelle x schreiben willst, springst du mit fseek oder seekg einfach direkt an die Stelle x und fängst an zu schreiben. Das ist alles. Du musst die Datei nicht vorher mit 0en füllen oder sowas. |
_________________ Wenn Word für Längeres geeignet wäre, würde es nicht Word, sondern Sentence, Page oder Article heißen.
Zuletzt bearbeitet von Christoph am 21:47:46 12.08.2012, insgesamt 2-mal bearbeitet |
|
 |
Le Fox
Unregistrierter
|
Le Fox Unregistrierter
21:48:56 12.08.2012 Titel: |
|
Zitieren |
Ich will eine Datei von verschiedenen Quellen empfangen -
z.B. splitte ich diese dazu in 3 Teile auf. Die Quelle vom 3te Teil war die Schnellste und der 3te Part ist dann zu erst da, dann kann ich den Part so gesagt direkt in die Datei schreiben ohne diesen im Speicher zu halten.
Also das gleiche Prinzip wie bei p2p Netzwerken, wenn man dort eine Datei überträgt.
Ist etwas schwer zu erklären, hoffe ihr habt es dennoch verstanden. |
|
|
|
 |
Ramanujan
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.02.2012
Beiträge: 148
|
Ramanujan Mitglied
21:49:45 12.08.2012 Titel: |
|
Zitieren |
Er will möglicherweise ein Programm schreiben, das große Dateien empfängt. Die Reihenfolge der ankommenden Daten ist dabei zufällig. Deshalb möchte er direkt den Speicherplatz auf der Festplatte reservieren, um dann die empfangenen Daten gleich an die richtige Stelle der Datei schreiben zu können.
Edit: Ich war etwas zu spät, meine Vermutung stimmte aber^^ |
Zuletzt bearbeitet von Ramanujan am 21:50:41 12.08.2012, insgesamt 1-mal bearbeitet |
|
 |
Le Fox
Unregistrierter
|
Le Fox Unregistrierter
21:51:10 12.08.2012 Titel: |
|
Zitieren |
@Christoph
Problematisch wird es doch, wenn ich während des Schreibens erst merke, dass ich nicht genug Platz habe. Wenn ich das schon vorher herausfinde, bevor der erste byte gesendet wurde dann kann ich ja noch was machen. |
|
|
|
 |
Christoph
Moderator
Benutzerprofil
Anmeldungsdatum: 30.04.2001
Beiträge: 5945
|
Christoph Moderator
22:55:24 12.08.2012 Titel: |
|
Zitieren |
| Le Fox schrieb: | | Problematisch wird es doch, wenn ich während des Schreibens erst merke, dass ich nicht genug Platz habe. Wenn ich das schon vorher herausfinde, bevor der erste byte gesendet wurde dann kann ich ja noch was machen. | Das wär ein Argument, ja. Andererseits darf es auch kein Problem darstellen, wenn der Speicher erst beim Empfangen ausgeht. Darauf muss dein Programm nämlich so oder so reagieren können: Je nach Dateisystem kann es durchaus passieren, dass du eine 1GB-Datei komplett vollgeschrieben hast, aber auf dem Dateisystem nicht mehr genügend Speicher ist, um jetzt in dieser Datei auch nur ein Byte zu verändern, weil das Dateisystem intern copy-on-write macht. |
_________________ Wenn Word für Längeres geeignet wäre, würde es nicht Word, sondern Sentence, Page oder Article heißen.
Zuletzt bearbeitet von Christoph am 22:56:57 12.08.2012, insgesamt 2-mal bearbeitet |
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|