JAVA - ich stehe an
Geizhals » Forum » Programmierung » JAVA - ich stehe an (17 Beiträge, 778 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
JAVA - ich stehe an
09.02.2014, 02:36:17
Hallo!

Mein kleines Programm soll mir helfen die verschiedenen Bilddateien auf meinen Platten zu ordnen. Dazu erstellt es mir ein XML-file und schreibt die Daten (Name, Größe etc.) rein.

Jetzt habe ich aber in jedem Bildverzeichnis eine kleine Textdatei mit den Infos.
Diese Datei hab ich nur mit einem "dir *.* > picinfo.txt" erstellt und dann manuell immer die einzelnen Bildinfos neben den Dateinamen eingetragen.  

Dies habe ich bei etlichen Gigabyte an Bilddateien (RAWs, PSDs, JPGs etc.) schon gemacht: Es existiert also in jedem Verzeichnis eine txt-Datei mit immer derselben Bezeichnung "picinfo.txt".

Die Textdateien sehen ca. so aus:

1.11.2013  20:52        20.702.686 _DSC0001.dng   Stephansdom ohne Leute unscharf
1.11.2013  20:53        22.778.889 _DSC0002.dng   Stephansdom Person geht durch
1.11.2013  20:54        21.698.605 _DSC0003.dng   Stephansdom gut
1.11.2013  20:55        20.002.554 _DSC0004.dng   Stephansdom verwackelt
1.11.2013  20:56        22.312.461 _DSC0005.dng   Stephansdom Blitztest

Jetzt will ich diese beiden Welten zusammenbringen und komm nicht weiter.

Also das Java-Programm soll ein XML erstellen und dafür die Daten aus der picinfo.txt nehmen.

Ich denke mal ich muss eine Schleife machen, in dem die Datei picinfo.txt geöffnet wird und dann jedem Info-Blick ein String zugewiesen wird.
Diesen muss ich dann in den output-Teil übergeben und der schreibt es mir in mein xml-file.

Wie mache ich das nun am Besten?

Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
.
Re: JAVA - ich stehe an
thE
10.02.2014, 11:31:59
1. WTF, warum zum Geier willst du eine Textdatei auslesen?!


File files[] = new File("PFAD").listFiles(new FileFilter(){
public boolean accept(File pathname){
return pathname != null && pathname.isFile() && pathname.getAbsolutePath().toLowerCase().endsWith(".dng");
}
});

So bekommst du alle Dateien die mit .dng aufhören. Du kannst natürlich beliebiges kombinieren/exkludieren, etc.

Natürlich geht das ganze auch rekursiv, etc. Sodass du mehrere Verzeichnisse durchgehen kannst.

XML kommt nun darauf an, was du alles brauchst. Es bietet sich zB der XMLEncoder/XMLDecoder für Klassen an.

Dh, du legst dir eine simple Klasse an, zB:

public class XMLDataHolder implements Serializable{

private static final long serialVersionUID = -6057731681590868983L;
private String name;
private String path;
private int typ;
//....


public XMLDataHolder()
{

}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public String getPath() {
return path;
}


public void setPath(String path) {
this.path = path;
}


public int getTyp() {
return typ;
}


public void setTyp(int typ) {
this.typ = typ;
}
}

Ganz wichtig sind die getter/setter!!!! Wenn du die nicht hast, wird das Element nicht geschrieben/gelesen (java-Beans)


So, die Dateien welche du ausliest, speicherst du dann in einer Liste, zB ArrayList.

Und hier noch wie man es speichert/ausliest:

public static List getListFromFile(String fileName) throws FileNotFoundException
{
XMLDecoder dec = new XMLDecoder(new FileInputStream(fileName));
Object obj = dec.readObject();
if(obj instanceof List)
{
dec.close();
return (List) obj;
}
dec.close();
return null;
}

public static void writeListToFile(List list, String fileName) throws FileNotFoundException
{
XMLEncoder enc = new XMLEncoder(new FileOutputStream(fileName));
enc.writeObject(list);
enc.close();
}


ABER: Der Offset ist der Oberhammer ;-) Wenn du die Dateien nicht "menschlich" lesbar brauchst, wäre vielleicht Java-Serialisierung nicht so verkehrt!
Oder gleich json, da ist der offset nicht so hoch wie bei XML.
Hier braucht man aber externe Libs:
https://code.google.com/p/json-simple/
http://json.org/java/
https://code.google.com/p/google-gson/
...
:P
Apple Fans sind wie Zeugen Jehovas. Es ist sinnlos mit ihnen zu reden..

Why not ZOIDBERG? (V)_(°,,,°)_(V)
                               (-.(-.(-.(-.-).-).-).-)
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung