Dateiname soll mit jedem Speichervorgang "hochzählen"
Dateiname soll mit jedem Speichervorgang "hochzählen"
Hallo liebe Community,
ohne die Forums-Suche bemüht zu haben möchte ich hier eine Frage stellen, da ich annehme, dass diese Frage noch von keinem hier oder in einem anderen Forum gestellt wurde.
Ich möchte ein Programm schreiben, dass nach einer Berechnung einen Wert in eine Datei schreibt. Das Programm soll dies bei jedem Aufruf, d. h. bei jeder Berechnung, tun. Dabei soll bei jedem Schreibvorgang eine neue Datei angelegt werden mit einem Dateinamen, dessen erster Teil fix, und der zweite variabel ist.
Der fixe Teil soll z. B. "log_" lauten (natürlich ohne Anführungszeichen). Der variable Teil soll eine Zahl sein, die, beginnend mit 001, mit jedem Speichervorgang hochgezählt wird (bis max. 999). Danach soll das Programm keine Daten mehr speichern, sondern eine Fehlermeldung ausgeben (in der Richtung "Löschen Sie erst Dateien!").
Das Programm soll aus der Liste der Dateien in seinem Verzeichnis nachschauen, welches die niedrigste noch nicht vergebene Zahl ist und diese dann an den fixen Teil des Dateinamens der Datei, in der das Ergebnis der aktuellen Berechung gespeichert werden soll, anhängen.
Nun zur eigentlichen Frage:
Wie würdet ihr ein solches Programm implementieren, angefangen von der zu verwendenden Programmiersprache bis hin zur Syntax? Welche Stolpersteine gibt es?
Speziell würde mich interessieren, ob ich für die Umsetzung des oben genannten Verfahrens für jede einzelne, bereits existierende Datei die Ziffernfolge im Dateinamen "extrahieren" und mit den Ziffernfolgen von 001 bis max. 999 vergleichen muss, bis ich eine Ziffernfolge finde, die es noch nicht in einem der Dateinamen gibt? Wenn ja, wie führe ich den Vergleich durch, bzw. wie bringe ich eine Zählvariable dazu, von 1 bis 999 zu zählen, dabei aber im zwei- und einstelligen Bereich führende Nullen zu aufzuweisen (die ja für den Vergleich von Wichtigkeit sind, da die Zahlen in den Dateinamen ebenfalls führende Nullen aufweisen)?
Ich freue mich über jede Anregung, Bemerkung oder Kommentar.
ohne die Forums-Suche bemüht zu haben möchte ich hier eine Frage stellen, da ich annehme, dass diese Frage noch von keinem hier oder in einem anderen Forum gestellt wurde.
Ich möchte ein Programm schreiben, dass nach einer Berechnung einen Wert in eine Datei schreibt. Das Programm soll dies bei jedem Aufruf, d. h. bei jeder Berechnung, tun. Dabei soll bei jedem Schreibvorgang eine neue Datei angelegt werden mit einem Dateinamen, dessen erster Teil fix, und der zweite variabel ist.
Der fixe Teil soll z. B. "log_" lauten (natürlich ohne Anführungszeichen). Der variable Teil soll eine Zahl sein, die, beginnend mit 001, mit jedem Speichervorgang hochgezählt wird (bis max. 999). Danach soll das Programm keine Daten mehr speichern, sondern eine Fehlermeldung ausgeben (in der Richtung "Löschen Sie erst Dateien!").
Das Programm soll aus der Liste der Dateien in seinem Verzeichnis nachschauen, welches die niedrigste noch nicht vergebene Zahl ist und diese dann an den fixen Teil des Dateinamens der Datei, in der das Ergebnis der aktuellen Berechung gespeichert werden soll, anhängen.
Nun zur eigentlichen Frage:
Wie würdet ihr ein solches Programm implementieren, angefangen von der zu verwendenden Programmiersprache bis hin zur Syntax? Welche Stolpersteine gibt es?
Speziell würde mich interessieren, ob ich für die Umsetzung des oben genannten Verfahrens für jede einzelne, bereits existierende Datei die Ziffernfolge im Dateinamen "extrahieren" und mit den Ziffernfolgen von 001 bis max. 999 vergleichen muss, bis ich eine Ziffernfolge finde, die es noch nicht in einem der Dateinamen gibt? Wenn ja, wie führe ich den Vergleich durch, bzw. wie bringe ich eine Zählvariable dazu, von 1 bis 999 zu zählen, dabei aber im zwei- und einstelligen Bereich führende Nullen zu aufzuweisen (die ja für den Vergleich von Wichtigkeit sind, da die Zahlen in den Dateinamen ebenfalls führende Nullen aufweisen)?
Ich freue mich über jede Anregung, Bemerkung oder Kommentar.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Dateiname soll mit jedem Speichervorgang "hochzählen"
Stolpersteine sehe ich da eher keine...!?Orioner hat geschrieben:Nun zur eigentlichen Frage:
Wie würdet ihr ein solches Programm implementieren, angefangen von der zu verwendenden Programmiersprache bis hin zur Syntax? Welche Stolpersteine gibt es?
Die Frage ist eher, wo kommen die Daten her?
Schau Dir mal die Funktion sprintf an, wenn Du dich für C oder C++ entscheidest, sie formatiert das automatisch für Dich.Orioner hat geschrieben: Speziell würde mich interessieren, ob ich für die Umsetzung des oben genannten Verfahrens für jede einzelne, bereits existierende Datei die Ziffernfolge im Dateinamen "extrahieren" und mit den Ziffernfolgen von 001 bis max. 999 vergleichen muss, bis ich eine Ziffernfolge finde, die es noch nicht in einem der Dateinamen gibt? Wenn ja, wie führe ich den Vergleich durch, bzw. wie bringe ich eine Zählvariable dazu, von 1 bis 999 zu zählen, dabei aber im zwei- und einstelligen Bereich führende Nullen zu aufzuweisen (die ja für den Vergleich von Wichtigkeit sind, da die Zahlen in den Dateinamen ebenfalls führende Nullen aufweisen)?
Sollen einfach nur 1000 Dateien entstehen? Dürfen vorhandene Dateien überschrieben werden, wenn ja würde ich einfach nur von 1 bis 999 hochzählen und Dateien beschreiben.
Falls nicht, wäre ein Zeitstempel im Dateinamen wohl sinnvoller, da ansonsten alte Dateien mit neuen Daten vermischt werden!?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Dateiname soll mit jedem Speichervorgang "hochzählen"
Das Problem erscheint mir recht simpel.
Du nutzt eine Hochsprache wie C/C++, kannst auch Java oder C# nutzen.
Du holst dir die Liste aller Dateien im Zielverzeichnis, schaust wie viele davon mit deinem Fixen Namen beginnen und welche davon die höchste Zahl besitzt.
Dann kannst du deine neuen Dateien speichern.
Du nutzt eine Hochsprache wie C/C++, kannst auch Java oder C# nutzen.
Du holst dir die Liste aller Dateien im Zielverzeichnis, schaust wie viele davon mit deinem Fixen Namen beginnen und welche davon die höchste Zahl besitzt.
Dann kannst du deine neuen Dateien speichern.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: Dateiname soll mit jedem Speichervorgang "hochzählen"
Ich würde dir Perl empfehlen. Dort hast du bereits integrierten Syntax für Globbing und Regular Expressions. Dateiverarbeitung ist auch relativ einfach.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Dateiname soll mit jedem Speichervorgang "hochzählen"
Nur Perl ist nicht einfach....?dani93 hat geschrieben:Ich würde dir Perl empfehlen. Dort hast du bereits integrierten Syntax für Globbing und Regular Expressions. Dateiverarbeitung ist auch relativ einfach.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Dateiname soll mit jedem Speichervorgang "hochzählen"
Also ich finde es nicht sooo schwer ^^Xin hat geschrieben:Nur Perl ist nicht einfach....?dani93 hat geschrieben:Ich würde dir Perl empfehlen. Dort hast du bereits integrierten Syntax für Globbing und Regular Expressions. Dateiverarbeitung ist auch relativ einfach.
Re: Dateiname soll mit jedem Speichervorgang "hochzählen"
Wie lautet die Zeitstempelfunktion von C++?
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Dateiname soll mit jedem Speichervorgang "hochzählen"
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: Dateiname soll mit jedem Speichervorgang "hochzählen"
Muss ich da dann nicht das Datum und die Zeit aus der seit dem 01.01.1970 vergangenen Sekunden von meinem Programm berechnen lassen?cloidnerux hat geschrieben:time
http://www.cplusplus.com/reference/ctime/time/
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Dateiname soll mit jedem Speichervorgang "hochzählen"
Jop.Muss ich da dann nicht das Datum und die Zeit aus der seit dem 01.01.1970 vergangenen Sekunden von meinem Programm berechnen lassen?
Gibt glaube ich auch andere Funktionen, du kannst dich auch direkt an deine Betriebssystem API wenden. Aber das ist ein einfacher und auch universeller weg.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum