Hallo zusammen, ich habe folgendes Problem: mein Bekannter hat mit Maxig ein Diavortrag erstellt und viel Zeit investiert. Dann ist irgendwie der Ordner verloren gegangen, in dem er die ganzen Fotos hatte, die in dem Vortrag verwendet werden. Die Projekt-Datei von dem Vortrag enthält Verweise auf die Photos (auf die Namen der Fotos), aber die werden in Magix nicht mehr angezeigt. Wenn er die Namen der Fotos in der Reihenfolge, wie sie in dem Projekt geordnet sind wissen würde, dann könnte er die Fotos wieder besorgen (waren von mehreren anderen Leuten) und die entsprechend umbenennen und in einen Ordner stecken, dem dem Pfad in dem Magix-Projekt entspricht. dann wäre alles wiederhergestellt. Aber das geht nur, wenn man auf die Projekt-Datei zugreift und die Namen der .jpg-Dateien in der Reihenfolge wie sie da kommen, rausliest. Ich habe es von ein paar Jahren in Informatik gemacht, das würde aber lange dauern, bis ich das wieder machen kann. Könnte jemand von euch vielleicht so ein kleines Programm schreiben, das auf die Datei zugreift, die Strings mit .jpg am ende rausliest und die in der richtigen Reihenfolge in eine Text-Datei legt? Damit wäre uns sehr geholfen
Nimm einen brauchbaren Editor, suche nach ".jpg", markiere den Filenamen davor und mache CTRL-C, CTRL-V. Für einen einmaligen Vorgang ist der Aufwand so groß wie der, ein Programm zu schreiben.
kommt darauf an, wie viele .jpg Dateien da sind. Es sind mehrere Hundert. In diesem Fall bin ich überzeugt, dass ein Programm viel leichter zu erstellen ist, als das. In der Zeit, als ich Informatik-Vorlesung besucht habe, würde ich so ein Programm vielleicht so in 5 Minuten schreiben können oder noch schneller. Jemand vom Fach kann das noch viel schneller, es sind ja nur ein paar Zeilen.
Das kann allerdings keiner, der das Format nicht kennt. Wenn du Beispieldaten postest und zeigst, wie die Strings begrenzt sind - vllt anführungsstriche drum oder so - sind die Chancen, dass dir das einer fix zusammenhackt, größer.
Ich hänge die Datei an. Die Strings sind nicht durch irgendwelche ASCII-Zeigen begrenzt, sonder von irgendwelchen, nicht lesbaren Zeichen umgeben (ich schau mir das mit Notepad++ an). Das Stringende ist ja an .jpg am Ende erkennbar, den Stringanfang kann man nicht erkennen, aber wenn man davon ausgeht, dass z.B. 20 Zeichen vor Dateiendung der Dateiname beginnt dann hat man je den Dateinamen mit evtl. ein paar unlesbaren Zeichen davor.
Ohne Gewähr... jeweils am \0 Zeichen geschnitten...
1 | package test; |
2 | |
3 | import java.io.IOException; |
4 | import java.io.InputStream; |
5 | import java.util.Enumeration; |
6 | import java.util.zip.ZipEntry; |
7 | import java.util.zip.ZipFile; |
8 | |
9 | public class Extract { |
10 | |
11 | /**
|
12 | * @param args
|
13 | * @throws IOException
|
14 | */
|
15 | public static void main(String[] args) throws IOException { |
16 | ZipFile zipFile = new ZipFile("cop.zip"); |
17 | Enumeration<? extends ZipEntry> entries = zipFile.entries(); |
18 | while (entries.hasMoreElements()) { |
19 | ZipEntry zipEntry = entries.nextElement(); |
20 | System.out.println("Process " + zipEntry.getName()); |
21 | InputStream stream = zipFile.getInputStream(zipEntry); |
22 | StringBuilder sb = new StringBuilder(); |
23 | int i; |
24 | while ((i = stream.read()) > -1) { |
25 | sb.append((char) i); |
26 | }
|
27 | int index = 0; |
28 | while ((index = sb.indexOf(".jpg", index + 4)) > -1) { |
29 | int endIndex = index; |
30 | while (sb.charAt(endIndex) > 0) { |
31 | endIndex--; |
32 | }
|
33 | System.out.println(index + ": " + ((int) sb.charAt(endIndex)) + "\t'" |
34 | + sb.substring(endIndex + 1, index + 4) + "'"); |
35 | }
|
36 | }
|
37 | }
|
38 | |
39 | }
|
Habs mit dem Kommando sed "s/\\x00\([^\\x00]*\)\(\.[Jj][Pp][Gg]\)/\\x0A\1\2\\n\\x0A/g" | grep -a -i jpg > out gemacht, die Ausgabe ist im Anhang, sind noch ein paar Müllzeilen drin
ich danke euch vielmals, gerade das habe ich gebraucht. Ich wusste, dass das relativ unkompliziert machbar ist, nur es ist zu lange her, wo ich das gelernt habe. Ich habe schon angefangen, mich wieder in Dateiein- und Ausgabe in C++ wieder einzulesen. Das hätte mich wohl einige Stunden Zeit gekostet. Das war sehr nett von euch, also nochmals besten Dank!!!!
Das Dateiformat ist übrigens sehr wahrscheinlich (Header="RIFF", div. "LIST") irgendeine RIFF-Variante...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.