Auomatisiertes löschen von Bilddateien, Erkennung durch Existenz in Text

ni-k

Mitglied
Folgende Aufgabe: Es existieren unendlich viele Bilder in einem Unterordnersystem. Außerdem existieren ca. 3000 Textdateien mit Programmcode, welche einen großteil dieser Bilder nutzen. Ziel ist es, automatisiert zu überprüfen, welche Bilder an irgendeiner Stelle im Programmcode in mind. einer Datei genutzt werden. Bildertitel die dabei nicht gefunden sollen gelöscht werden und/oder in eine Liste geschrieben werden.

Ich hatte erst an eine Batch-Datei gedacht, da ich mich mit Java aber besser auskenne dachte ich, vlt geht es auch irgendwie so... Kennt irgendjemand Programm / Tutorials / Vorlagen die dies können oder Teilaspekte beschreiben?

Vielen Dank für eure Tipps,
Nico
 
V

vanny

Gast
Was ist nun dein Problem?

Wie du Dateien Löscht?
Wie du die Textdateien ausliest?
Wie man ein Programm schreibt?

Wir helfen gerne, aber Aufgabe hinklatschen und "mach ma" is nich!

Gruß Vanny
 

Evil-Devil

Top Contributor
find und grep über die Textdateien und alle Bilder ausgeben lassen. Das Ergebnis pipen und in eine Textdatei schreiben. Alle Bilder in eine Textdatei einlesen und mit der ersten abgleichen. Alle nicht verwendeten ermitteln und und löschen. Lässt sich alles auf der Unix Shell erledigen ^^"
 

ni-k

Mitglied
geht klar, tut mir Leid, ich dachte jemand kenne vielleicht Tutorials die etwas in der Art behandeln, daher habe ich alles beschrieben.

Wie ich ein Programm schreibe weiß ich. Was mir fehlt sind die folgenden:

1) Eine einfache Datei (deren Namen ich weiß) öffnen kann ich über Inputstreams. Wie kann ich aber nach und nach alle Dateien eines Ordners durchsuchen, ohne zu wissen wie sie heißen oder wie viele es sind?

2) Wie mache ich das obige, allerdings auch noch so, dass wenn ein Ordner in einem Ordner ist, er diesen wieder als Ursprungsordner nimmt und von dort aus weiter geht bis er keinen mehr findet (also sehr gut vorstellbar als rekursiven Baum)

3) Wie kann ich möglichst schnell nach einem Wort X innerhalb der 3000 Textdateien suchen? (alle einlesen und durchlaufen würde vermutlich ewig dauern) - gibt es eine Möglichkeit evtl. die indizierte Suche von Windows zu nutzen?

Hoffe die Fragestellungen sind jetzt "konkret" genug - es ist halt nicht ganz einfach, weil ich eben nicht weiß wie man an sowas herangeht.

Gruß,
Nico
 

ni-k

Mitglied
Sorry, da komm ich nicht ganz mit:
1) find und grep? wie meinst du das?
2) Was versteht man unter pipen?
3) Wie lese ich "alle Bilder in eine Textdatei"? Du meinst die namen-Attribute der Bilder?
 

AmunRa

Gesperrter Benutzer
zu 1 du faengst bei dem oberstes Ordner an und fügst alle Datein die in diesem Ordner sind in eine Liste, (die Klasse File hat dafür passende Methoden siehe API) dann läufst du rekursiv ueber alle Ordner in diesem Ordner und machst das selbe am Ende solltest du eine Liste aller Datein haben.


zu Punkt 2 hast du ja selbst schon gelöst rekursion

zu 3 keine Ahnung
 

c_sidi90

Top Contributor
Schau dir mal die Klasse "File" an, es gibt eine Methode, welche dir alle alle Dateien in einem angegebenen Ordner als Array liefert. Mit Rekursion kannst du durch alle Ordner und Unterverzeichnisse iterieren und so deine Dateien prüfen.

Ich würde zu erst alle Dateien durchsuchen und in eine List speichern, im Anschluss in einer Schleife jede Datei auslesen und Zeilenweise prüfen ob irgendwo in der Zeile eines der Bilder vorkommt, wenn ja, dieses Bild löschen usw.

Bin kurz vorm einschlafen, sonst hätte ich dir noch ausführliche den Ansatz beschrieben, schaue morgen nochmal rein ;)
 
V

vanny

Gast
... Es existieren unendlich viele Bilder ...

in diesem Fall würd ich das Speichern aller Bilder in eine Liste lassen :oops:

1. Würde ich mal schaun, ob die Bilder eine Bezeichnung besitzen, die einer gewissen Logik folgen und sich somit in irgendeiner Form sortieren lassen.

2. Würde ich eher die 3000 Textdateien als Listeninhalt benutzen und je nach Sortierbarkeit eben auch sortieren.

3. Dann einfach Datei für Datei hernehmen und wenn sie nicht in deiner "KandidatenListe" steht halt direkt löschen.


So zumind. verstehe ich deine Ausgangssituation.

Gruß Vanny
 
Zuletzt bearbeitet von einem Moderator:

ni-k

Mitglied
ich bin mir nicht ganz sicher ob ich alles so richtig verstanden habe:
also du vani würdest den Text als Basis nehmen und dann schauen ob du die Bildernamen dort findest? Bezüglich der Daten hätte ich vielleicht am Anfang doch mehr Infos geben sollen, aber ich dachte nicht dass es so konkret wird:
Die Textdateien sind HTML/CSS/PHP/JS etc. Programmiercode in denen es leider nicht so ist, dass immer nur das CSS für den Style zuständig ist... Bei den Bilddateien um Bilder eines Spiels, die zwar natürlich irgendwie logisch aufgebaut sind, allerdings nicht wie bei Fotos oder ähnlichen mit Nummern etc.

Ich finde die Idee von c_sidi ziemlich gut das ganze quasi rumzudrehen, also quasi alle Bilddateien speichern, dann den Text nach und nach zu durchlaufen. Dabei könnte man deine Idee Vani nutzen, um quasi erst die CSS Dateien durch durchlaufen, da man so bestimmt schon mal einige Bilder verliert und dementsprechend in den PHP etc. Dateien nachher nur noch "relativ" wenige Bilder überprüfen muss.

So weit wäre das mein Plan für morgen, dann würde ich das ganze mal versuchen umzusetzen und natürlich schreib ich dann obs klappt.

Falls wer noch was anmerken will - natürlich sehr sehr gerne :)
 

Marco13

Top Contributor
Hm... wie soll man erkennen,
Java:
String name = "Dass";
name += " das hier";
StringBuilder sb = new StringBuilder(" der");
sb.append(" Name");
name += sb.toString() + " einer.P"+"N"+"G";
-Datei ist?
 

ni-k

Mitglied
ähm, ich verstehe deinen Einwand nicht so ganz? ich weiß nicht obs noch ne möglichkeit gibt direkt auf den Typ zuzugreifen, sonst halt .getname() und von hinten bis zum punkt parsen und anschließend schauen wie die endung heißt.

Abgesehen davon stehen sowieso alle Bilddateien in einem ordner.
 

Empire Phoenix

Top Contributor
Er meint wenn im code nicht der genau name ist, sondern der durch code erstellt wird.

LoadingScreen_0.png
LoadingScreen_1.png
LoadingScreen_x.png

und x wird zur laufzeit mit einer Random variable gemacht.
 
V

vanny

Gast
...Pfanny würd ich ja noch gelten lassen aber bei vani muss ich mich hier mal beschwehren:shock:

meine Herangehensweise bezog sich auf deine Behauptung, du hättest unendlich viele Bilder ;)
 

Evil-Devil

Top Contributor
Sorry, da komm ich nicht ganz mit:
1) find und grep? wie meinst du das?
2) Was versteht man unter pipen?
3) Wie lese ich "alle Bilder in eine Textdatei"? Du meinst die namen-Attribute der Bilder?

Naja, auf einem Windoof geht es leider nicht. Müsstest ein Linux bzw. Mac-System dein Eigen nenn.

1) Find ist ein Programm zum auffinden von Dateien. Grep wiederum kann innerhalb von Dateien suchen.
2) Das Ergebnis von einem Ausgabe-Stream in den nächsten zu übertragen
3) Ja, ich dachte nur an die Namen der Bilder samt Verzeichnis.


@Java: Die Textdateien hast du ja soweit schon und wie man sie liest weißt du auch. Du könntest also Zeile für Zeile jede Datei durchgehen und schauen ob dort eine bekannte Bilddatei (jpg, png, gif, etc) beschrieben steht. Dazu würde sich ein regulärer Ausdruck anbieten.
Sobald du alle Bilder gesammelt hast sollte der Rest ein Kinderspiel sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
V JSON-Objs aus JSON-Obj filtern und löschen (Manipulation ohne Kenntnis der vollst. Struktur) Java Basics - Anfänger-Themen 12
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
K Wie kann ich "enter" von der Console in Eclipse löschen? Java Basics - Anfänger-Themen 2
E Objekte löschen Java Basics - Anfänger-Themen 9
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
J Zelleninhalt einer Jtable löschen Java Basics - Anfänger-Themen 2
G Bitte meinen Account löschen Java Basics - Anfänger-Themen 1
javapingu Jeglichen Inhalt einer Textdatei nach Zeile n löschen Java Basics - Anfänger-Themen 8
W Beitrag löschen Java Basics - Anfänger-Themen 1
O Doppelt verkette Liste Element löschen Java Basics - Anfänger-Themen 15
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
M Abfrage j/n und Bildschirm löschen Java Basics - Anfänger-Themen 3
J JTable Spalteninhalt löschen Java Basics - Anfänger-Themen 1
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
R Löschen und ausgeben eines Teilbaums Java Basics - Anfänger-Themen 3
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
V_Fynn03 Lineare Datenstrukturen Element löschen? Java Basics - Anfänger-Themen 2
S Wann buffer löschen? Java Basics - Anfänger-Themen 5
S Windows printerqueue mit Java löschen Java Basics - Anfänger-Themen 3
M Objekt mit eindeutiger ID löschen, das nächste Objekt hat dann diese ID Java Basics - Anfänger-Themen 5
M Image löschen Java Basics - Anfänger-Themen 2
H Objekt aus einem Array löschen Java Basics - Anfänger-Themen 1
O Element aus Array löschen Java Basics - Anfänger-Themen 5
steven789hjk543 Kann ich manche Versionen des jdk löschen? Java Basics - Anfänger-Themen 6
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
E Elemente aus Liste löschen Java Basics - Anfänger-Themen 5
W Map doppelte Values löschen Java Basics - Anfänger-Themen 3
T Löschen in doppelt verketteter Liste Java Basics - Anfänger-Themen 1
A Größten Eintrag aus Binärbaum löschen Java Basics - Anfänger-Themen 4
J am Anfang eines String ein Leerzeichen löschen Java Basics - Anfänger-Themen 6
Z Vocale löschen Java Basics - Anfänger-Themen 3
D B-Baum einfügen und löschen Java Basics - Anfänger-Themen 2
J Elemente in Array speichern, löschen, ... Java Basics - Anfänger-Themen 3
D Werte AVL-Baum löschen Java Basics - Anfänger-Themen 2
M Ordner mit Inhalt löschen Java Basics - Anfänger-Themen 7
M LinkedList elemente löschen Java Basics - Anfänger-Themen 2
R Datei löschen Java Basics - Anfänger-Themen 3
V Durch Methode Objekt löschen Java Basics - Anfänger-Themen 2
P Verbindung von Zwei Kreisen löschen ! Java Basics - Anfänger-Themen 6
D JTable Zeilen löschen Java Basics - Anfänger-Themen 5
I Hilfe beim löschen von Buchstaben. Java Basics - Anfänger-Themen 1
I Hilfe beim löschen schon Buchstaben. Java Basics - Anfänger-Themen 4
J Kann eine .jar sich selber Löschen? Java Basics - Anfänger-Themen 5
D Projekte + Datum + löschen Java Basics - Anfänger-Themen 11
B Methoden Element aus einem Array löschen, Rest nach vorne verschieben? Java Basics - Anfänger-Themen 4
K Element in ArrayList löschen ohne Index zu verschieben Java Basics - Anfänger-Themen 2
O Hilfestellellung bei Rekursivem Löschen Java Basics - Anfänger-Themen 11
N Generischer Binärbaum - löschen Java Basics - Anfänger-Themen 1
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
G zeichen einer Zeile löschen Java Basics - Anfänger-Themen 4
R [Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder Java Basics - Anfänger-Themen 1
F Element aus LinkedList löschen Java Basics - Anfänger-Themen 3
B lanterna einzelne Zeichen aus dem Terminal löschen Java Basics - Anfänger-Themen 0
S jList --> Array einfügen und Liste löschen Java Basics - Anfänger-Themen 5
O Löschen lange pfade...Fehler? Java Basics - Anfänger-Themen 1
O Eclipse Liste Löschen Java Basics - Anfänger-Themen 5
Bluedaishi Dateien Lassen sich unter windows nicht löschen Java Basics - Anfänger-Themen 8
K Klassen Objekte löschen Java Basics - Anfänger-Themen 11
B Methoden BinärBaum als String Knoten löschen Java Basics - Anfänger-Themen 5
D String in Datei suchen und löschen Java Basics - Anfänger-Themen 2
S Grafik löschen Java Basics - Anfänger-Themen 10
L Daten aus Array Feld löschen Java Basics - Anfänger-Themen 2
X Erste Schritte Großschreibung löschen Java Basics - Anfänger-Themen 5
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
I Zwei Listen: Wenn nicht vorhanden löschen Java Basics - Anfänger-Themen 4
E Arrayeintrag nach Index löschen und Array kürzen Java Basics - Anfänger-Themen 3
thet1983 g.Graphics löschen? Java Basics - Anfänger-Themen 1
GadgetSofa .txt Datei erstellen und gleich wieder Löschen? Java Basics - Anfänger-Themen 12
P Doppelte Datensätze aus CSV-Datei löschen Java Basics - Anfänger-Themen 17
M Löschen von Objekten während Iteration über Liste Java Basics - Anfänger-Themen 9
M Java Datei soll sich selbst löschen Java Basics - Anfänger-Themen 8
J Baum Knoten löschen Java Basics - Anfänger-Themen 10
T Textdatei Zeile löschen? Java Basics - Anfänger-Themen 4
I Element löschen aus der Liste Java Basics - Anfänger-Themen 2
S Einen Eintrag im Array löschen? Java Basics - Anfänger-Themen 11
J ArrayList Objekt löschen Java Basics - Anfänger-Themen 6
M Variablen Daten aus Array löschen Java Basics - Anfänger-Themen 2
B Klassen Obejekte in Java "Löschen" Java Basics - Anfänger-Themen 11
M ArrayList-Element hinzufügen u. löschen Java Basics - Anfänger-Themen 2
B Ordner leeren/löschen Java Basics - Anfänger-Themen 5
I .txt Datei Zeile löschen. Java Basics - Anfänger-Themen 13
R Doppelte löschen Java Basics - Anfänger-Themen 6
J Klick auf Button -> JFrame öffnet sich erneut. & Datei lässt sich nicht löschen Java Basics - Anfänger-Themen 7
H Textfeldinhalt löschen nachdem Frame geschlossen wird Java Basics - Anfänger-Themen 8
S Vokale am Ende von Wörtern löschen Java Basics - Anfänger-Themen 7
W Löschen Datenknoten Suchbaum Java Basics - Anfänger-Themen 4
B Object in Array nach Prüfung löschen Java Basics - Anfänger-Themen 13
T Sting -> Array, leere Stellen löschen Java Basics - Anfänger-Themen 6
L Split + Zeilen einer Datei mit bestimmtem Inhalt löschen Java Basics - Anfänger-Themen 23
M Daten in ArrayList löschen Java Basics - Anfänger-Themen 15
H Einträge aus Array löschen Java Basics - Anfänger-Themen 8
B mit einem Iterrator elemente aus einer liste löschen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben