Forum: PC-Programmierung Hilfe, bestimmte Strings aus einer Datei auslesen


von hilfesuchender (Gast)


Lesenswert?

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

von HildeK (Gast)


Lesenswert?

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.

von hilfesuchender (Gast)


Lesenswert?

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.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

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.

von hilfesuchender (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Läubi .. (laeubi) Benutzerseite


Angehängte Dateien:

Lesenswert?

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
}

von Niklas G. (erlkoenig) Benutzerseite


Angehängte Dateien:

Lesenswert?

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

von hilfesuchender (Gast)


Lesenswert?

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

von Arc N. (arc)


Lesenswert?

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
Noch kein Account? Hier anmelden.