Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C++ (auch C++0x und C++11) ::  Temp Datei erstellen  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Le Fox
Unregistrierter




Beitrag 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
Beitrag 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
Beitrag 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




Beitrag 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
Beitrag 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
Beitrag 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




Beitrag 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
Beitrag 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




Beitrag 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
Beitrag 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
c++.de :: C++ (auch C++0x und C++11) ::  Temp Datei erstellen  
Gehen Sie zu Seite 1, 2  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




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.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.