Seltsames Verhalten im Konstruktor

MiMa

Top Contributor
Im Konstruktor möchte ich bei der Erstellung von einem Objekt gleich einiges an Daten erzeugen lassen.
Auszug aus dem Konstruktor
Java:
public Datei(File quellDatei, Einstellungen einstellungen ) throws IOException, TikaException {
        /* Daten die sofort ermittelt werden können */
        this.dateiQuelle = quellDatei;
        this.nameEndung = quellDatei.getName();
        this.name = entferneEndung(quellDatei.getName());
        this.MediaTyp = sucheMediaTyp(quellDatei);
        this.MediaHauptTyp = sucheMediaHauptTyp(this.MediaTyp);
        this.MediaUnterTyp = sucheMediaUnterTyp(this.MediaTyp);
        this.endung = sucheEndung(quellDatei.getName());
        this.dateiZiel = new File(einstellungen.getVerzeichnisPfadZiel().toString() + "//" + this.nameEndung);
        // datumErstellunng
        // datumJahrErstellung
        long datumAenderungMillisekunden = quellDatei.lastModified();
        this.datumAenderung = Datum.konvertiereVonMillisekunden(datumAenderungMillisekunden);
        // inhaltLeer
        // inhalt
Dazu habe ich eine Methode geschrieben bei der das Datum von Millisekunden in ein String Datum umgewandelt wird.
Das funktioniert soweit und konnte das im Log nachlesen.
Code:
2020-05-08 20:16:46 [main] INFO  Funktionen.Datum - Das Datum in Millisekungen wurde übergeben : 1299433596000
2020-05-08 20:16:46 [main] INFO  Funktionen.Datum - Das Datum wurde von Millisekunden konvertiert : 06.03.2011

Allerdings verstehe ich nicht, warum es dann im Objekt nicht enthalten ist?
Das Aenderungsdatum ist : null ???
Code:
2020-05-08 20:16:46 [main] INFO  Programm.Programmstart - Die Quelldatei ist           : B:\01 Postfach\04 Text mit komplette Stichworte.pdf
2020-05-08 20:16:46 [main] INFO  Programm.Programmstart - Die Zieldatei ist            : B:\02 Bibliothek\04 Text mit komplette Stichworte.pdf
2020-05-08 20:16:46 [main] INFO  Programm.Programmstart - Der Dateiname ist            : 04 Text mit komplette Stichworte
2020-05-08 20:16:46 [main] INFO  Programm.Programmstart - Der Dateiname mit Endung ist : 04 Text mit komplette Stichworte.pdf
2020-05-08 20:16:46 [main] INFO  Programm.Programmstart - Die Dateiendung ist          : .pdf
2020-05-08 20:16:46 [main] INFO  Programm.Programmstart - Der MediaType ist            : application/pdf
2020-05-08 20:16:46 [main] INFO  Programm.Programmstart - Der MediaHauptTyp ist        : application
2020-05-08 20:16:46 [main] INFO  Programm.Programmstart - Der MediyUnterTyp ist        : pdf
2020-05-08 20:16:46 [main] INFO  Programm.Programmstart - Das Erstellungsdatum ist     : null
2020-05-08 20:16:46 [main] INFO  Programm.Programmstart - Das Erstellungsjahr ist      : null
2020-05-08 20:16:46 [main] INFO  Programm.Programmstart - Das Änderungsdatum ist       : null
Variablendeklaration
Mi
Java:
 private String datumAenderung;
Get und Set Methoden
Java:
public String getDatumAenderung() {
        return datumAenderung;
    } // getDatumAenderung
   
public void setDatumAenderung(String datumAenderung) {
        this.datumAenderung = datumAenderung;
    } // setAenderungDatum


Ich hatte das Phenomen auch schon mal bei Dateiname ohne Dateiendung.
Auf einmal funktionierte es dann doch, weis aber nicht warum, weil ich dann daran keine Änderung dran vorgenommen hatte.

Für einen Tipp wäre ich dankbar.
 
Zuletzt bearbeitet:
An welcher Stelle werden die Log-Ausgaben wie erzeugt? Wird dazwischen ggf. mal set mit null als Parameter aufgerufen?
 
Konvertierung
Java:
public static String konvertiereVonMillisekunden(long datumMillisekunden) {
        LOG.info("Das Datum in Millisekungen wurde übergeben : " + datumMillisekunden);
        // Long Datum in ein Date umwandeln
        Date datumM = new Date(datumMillisekunden);
        // Date in einen String mit neuem Format umwandeln
        SimpleDateFormat datumFormat = new SimpleDateFormat("dd.MM.yyyy");
        String datum =  datumFormat.format(datumM);
        LOG.info("Das Datum wurde von Millisekunden konvertiert : " + datum);
        LOG.info("*****************************************************************************");
        return datum;
    } // konvertiereDatumVonMillisekunden
Die Logging Methode
Code:
public static void pruefeDateiInhalte(Datei dateiObjekt) {
        LOG.info("Die Quelldatei ist           : " + dateiObjekt.getDateiQuelle());
        LOG.info("Die Zieldatei ist            : " + dateiObjekt.getDateiZiel());
        LOG.info("Der Dateiname ist            : " + dateiObjekt.getName());
        LOG.info("Der Dateiname mit Endung ist : " + dateiObjekt.getNameEndung());
        LOG.info("Die Dateiendung ist          : " + dateiObjekt.getEndung());

        LOG.info("Der MediaType ist            : " + dateiObjekt.getMediaTyp());
        LOG.info("Der MediaHauptTyp ist        : " + dateiObjekt.getMediaHauptTyp());
        LOG.info("Der MediyUnterTyp ist        : " + dateiObjekt.getMediaUnterTyp());

        LOG.info("Das Erstellungsdatum ist     : " + dateiObjekt.getDatumErstellung());
        LOG.info("Das Erstellungsjahr ist      : " + dateiObjekt.getDatumJahrErstellung());
        LOG.info("Das Änderungsdatum ist       : " + dateiObjekt.getDatumErstellung());

        LOG.info("Der Dateiinhalt ist Leer     : " + dateiObjekt.isInhaltLeer());
        LOG.info("Der Dateiinhalt ist          : " + dateiObjekt.getInhalt());
        LOG.info("Der Dateikommentar ist       : " + dateiObjekt.getKommentar());

        LOG.info("Die Prüfsumme der datei ist  : " + dateiObjekt.getPruefsumme());
        LOG.info("Der Zustand der Datei ist    : " + dateiObjekt.getZustand());
        LOG.info("*****************************************************************************");
    } // pruefeDateiInhalte
Main Auszug
Java:
// Schleife für einzelne Ausgabe der Dateien: ANFANG
        for (File eintrag : dateiListe) {
            LOG.info("Erstellt ein Dateiobjekt für das speichern von Daten zur Datei");
            Datei dateiObjekt = new Datei(eintrag, einstellungen);
            pruefeDateiInhalte(dateiObjekt);

Die gibt nicht null zurück, das habe ich gestest indem ich im Konstruktor die Ausgabe mal einen Logeintrag einbaute und es wurde der richtige Wert ausgegeben.

Im Konstruktor habe ich auch das mal ausprobiert
Java:
this.datumAenderung = "Ein Text im Aenderungsdatum";
Es hat keine Wirkung gezeigt, obwohl der Dateityp für Aenderungsdatum String ist???

Auszug Konstruktor
Code:
long datumAenderungMillisekunden = quellDatei.lastModified();
LOG.info("Testausgabe vom Datum : " + Datum.konvertiereVonMillisekunden(datumAenderungMillisekunden));
Logausgabe
Code:
2020-05-09 00:23:16 [main] INFO  Dateiarten.Datei - Testausgabe vom Datum : 06.03.2011

ich vermute dass die Zuweisung "this.datumAenderung" irgendwie nicht funktioniert ????
Funktioniert nicht mal wenn ich eine Zeichenkette zuweise?
 
Zuletzt bearbeitet:
Deine Log Ausgabe ist falsch, da ist ein Copy und Paste Fehler drin, du gibst das Datum der Erstellung aus anstelle den Änderungsdatum.
 
Vielen Dank,
ich hin froh das es nichts komplizierteres war.
Über die Logging Methode habe ich auch drüber geschaut, habe es aber nicht gesehen.
War gestern vielleicht zu lange am Rechner. 😉
 

Zurück
Oben