CSV-Daten auswählen, Graph anzeigen

Mein Programm, gibt mir eine Liste von Dateien in einem Verzeichnis wieder. Dieses Verzeichnis wird über eine txt Datei aufgerufen.
In der zweiten Zeile der txt Datei möchte ich jetzt Nummern schreiben.
Bei einer “1” soll die Datei mit der “exersice-1” und dem aktuellen Datum im xy-Graphen angezeigt werden.
Simultan dazu das gleiche mit der “2”.
Jemand eine Idee wo mein Fehler liegt?

Hier die Dateien in der Ausgabe:

 export_test_practise-1_2017-06-23_2017-06-23.csv
 export_test_practise-1_2017-06-24_2017-06-24.csv
 export_test_practise-2_2017-06-24_2017-06-24.csv

Und hier mein Code:

import java.awt.Color;
import java.awt.EventQueue;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FilenameFilter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.TimeZone;

public class Test {
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            ApplicationFrame frame = new ApplicationFrame("Temperaturprofile");
            Test test = new Test();
            try {
                frame.add(test.createChart("Temperature profile"));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            frame.pack();
            frame.setLocationRelativeTo(null);;
            frame.setVisible(true);
        });
    }
    private ChartPanel createChart(String chartTitle) throws IOException {
        JFreeChart chart = ChartFactory.createTimeSeriesChart(chartTitle,
            "Time", "Temperature", createDataset(), true, true, false);
        ChartPanel chartPanel = new ChartPanel(chart);
        XYPlot plot = chart.getXYPlot();
        DateAxis axis = (DateAxis) plot.getDomainAxis();
        SimpleDateFormat df = new SimpleDateFormat("HH:mm:ssX");
        df.setTimeZone(TimeZone.getTimeZone("UTC"));
        axis.setDateFormatOverride(df.getTimeInstance());
        plot.setBackgroundPaint(Color.WHITE);
        return chartPanel;
    }
    public XYDataset createDataset() throws IOException {
        TimeSeries series = new TimeSeries("Temperature");
        TimeSeriesCollection dataset = new TimeSeriesCollection(series);
        File dir = new File("../User/Test.txt"); 
        // Read from the file
        BufferedReader br = new BufferedReader(new FileReader(dir));
        String line  = br.readLine();
        String path2 = br.readLine(); 
        br.close();
        new File (line);   
        File[] fileList = new File (line).listFiles(new FilenameFilter() {  
            public boolean accept(File dir, String name) {
                return name.endsWith(".csv");
            }
        });
        for (File f : fileList){
            Arrays.sort(fileList);
            System.out.println(f.getName());
        }
        long mod = 0; 
        File found; 

        if (path2.equals(1) && dir.isFile() && dir.getName().toLowerCase().endsWith("1") && dir.lastModified() > mod){
            mod = dir.lastModified(); 
            found = dir; 
        }
        else if (path2.equals(2) && dir.isFile() && dir.getName().toLowerCase().endsWith("2") && dir.lastModified() > mod){
            mod = dir.lastModified(); 
            found = dir; 
        }
        return dataset;
    }
}

Würd mich freuen, wenn von euch mal jemand drüberschauen könnte.

LG

In createDataset muss noch bisschen was gemacht werden.
Welche Dateien gibt es?
Welchen Inhalt/Namen haben sie?
Was macht dein Code?
Nach welchem Kriterium soll sortiert werden, .lastModified() oder name?

in den Schleifen meinst du? Aber wo liegt der Fehler?

quote=„CyborgBeta, post:2, topic:19403“]
Welchen Inhalt/Namen haben sie?
[/quote]
Die Dateien , die aus dem Verzeichnis gelesen werden sind der Output, also die 3 .csv Dateien oben in der Angabe[quote=„CyborgBeta, post:2, topic:19403“]
Welchen Inhalt/Namen haben sie?
[/quote]

Er gibt mir zurzeit nur die csv-Dateien aus, die im Verzeichnis gespeichert sind, das macht er aber auch ohne die Schleifen…
Ich möchte, dass er bspw. einer 1 in der Textdatei, das File mit der 1 im Namen öffnet, welches am Aktuellsten ist…

Die csv-Files muss auch noch bearbeitet werden, das heißt unnötige Zeichen fallen weg & werden nicht berücksichtig.
Das habe ich so gelöst:

 while ((line = br.readLine()) != null) {
         //Separate the string after each comma
            String[] split = line.split(",");
         //Display the console output for checking
          System.out.println(ZonedDateTime.parse(split[1]).format(DateTimeFormatter.ISO_LOCAL_TIME)  + "," +split[2]);
          ZonedDateTime zdt = ZonedDateTime.parse(split[0]);
          
          Second second =  new Second(Date.from(zdt.toInstant()));
          series.add(second, Double.valueOf(split[2]));
        }

Ich habe den Code vorher mit festem Aufruf der csv-File getestet & mit dem direkten Einlesen des Vereichnisses & der gewünschten csv Datei mit FileReader funktioniert es super. Also denke ich , mein Fehler liegt in der Schleife bzw. dem Aufruf einer .csv Datei aus dem textdokument

Ich weiß nicht, ob es nur an mir liegt, aber ich finde das schwer zu verstehen, was du schreibst…

Ich hätte gern Beispieldateien mit Beispielinhalten,

also eine Datei hat eine Nummer und ein Datum im Namen und auch ein lastModified Attribut, aber was steht in den Dateien?

Wo nach soll sortiert werden, was soll in dern X- und Y-Achse eingetragen werden?

Du bist neu hier, deswegen ist das verzeihlich, aber i. A. ist diese Frage nicht gut gestellt. :wink: Wir brauchen Beispiele, Code / dein Versuch und auch eine natürlichsprachliche Umschreibung. Studierst du Informatik?

Ich verstehe was du meinst…wenn ich es so betrachte ist deine sichtweise verständlicher :relaxed:

Also als Beispieldaten hier einmal den Inhalt von export_test_practise-1_2017-06-24_2017-06-24.csv

Ungefiltert & ursprünglich (die ersten Zeilen):
utc,local,celsius 2017-06-23T22:11:53+00:00,2017-06-24T00:11:53+02:00,28.97 2017-06-23T22:26:53+00:00,2017-06-24T00:26:53+02:00,28.97 2017-06-23T22:41:53+00:00,2017-06-24T00:41:53+02:00,28.97 2017-06-23T22:56:54+00:00,2017-06-24T00:56:54+02:00,28.91 2017-06-23T23:11:54+00:00,2017-06-24T01:11:54+02:00,28.91 2017-06-23T23:26:54+00:00,2017-06-24T01:26:54+02:00,28.91 2017-06-23T23:41:54+00:00,2017-06-24T01:41:54+02:00,28.91
In meiner „Ur“-Version des Codes mit direktem Auslesen aus der csv-Datei sieht es dann so aus:
00:11:53,28.97
00:26:53,28.97
00:41:53,28.97
00:56:54,28.91
01:11:54,28.91
01:26:54,28.91
01:41:54,28.91

Mit diesen Daten erstelle ich dann den Graphen:

Ja! Ich hab das erste Semester hinter mir, aber fühl mich nicht recht fit mit dem was wir bisher gelernt haben & möchte mich da jetzt ein bisschen selber einarbeiten. Deshalb hab ich mir jetzt in den Ferien ein Projekt gesucht & das versuche ich umzusetzen :slight_smile: Mit jFreeChart in diesem Fall :wink:

Ist es jetzt verständlicher?

‚Aufräumen von Gedanken‘ kann man hier wohl als wichtigsten Punkt nennen,
was ist in der Tat deine Frage aktuell? eine einzelne CSV-Datei zu bestimmen?

alles zu JFreeChart scheint irrelevant, derartigen Code und auch Text bis hin zu Thementitel zu posten verwirrt alles etwas,
etwas aufgeräumter dein Code (Formatierung, Zeileneinrückung ist auch wichtig) :

	public File findFile() throws IOException {
		File dir = new File("../User/Test.txt");
		// Read from the file
		BufferedReader br = new BufferedReader(new FileReader(dir));
		String line = br.readLine();
		String path2 = br.readLine();
		br.close();
		new File(line); // macht nichts
		File[] fileList = new File(line).listFiles(new FilenameFilter() {
			public boolean accept(File dir, String name) {
				return name.endsWith(".csv");
			}
		});
		for (File f : fileList) {
			Arrays.sort(fileList); // falsch in Schleife
			System.out.println(f.getName());
		}
		long mod = 0;
		File found = null;

		if (path2.equals(1) && dir.isFile()
				&& dir.getName().toLowerCase().endsWith("1")
				&& dir.lastModified() > mod) {
			mod = dir.lastModified();
			found = dir;
		} else if (path2.equals(2) && dir.isFile()
				&& dir.getName().toLowerCase().endsWith("2")
				&& dir.lastModified() > mod) {
			mod = dir.lastModified();
			found = dir;
		}
		return found;
	}

(ok, auch bei mir Anzeige nicht optimal…)

Arrays.sort() in der Schleife über ein Array ist nebenbei schlecht


String.equals(Zahl) geht nicht,
darüber braucht es kein ellenlanges Programm,
einfach nur in Ruhe untersuchen:

	public static void main(String[] args) {
		String st = "1";
		System.out.println(st.equals(1));
		System.out.println(st.equals("1"));
		int k = Integer.parseInt(st);
		System.out.println(k == 1);
	}

freilich muss man erstmal wissen was falsch ist,
man kommt nur in großen Programmen zu solchen Hürden,
diese dann eben auch im großen Programm bei Problemen detailliert begleiten, untersuchen:

überhaupt erstmal ausgeben was path2 ist, ob richtig eingelesen,
wenn dann ein if zu path2 nicht das tut was du annimmst, dann die einzelnen Bestandteile untersuchen,

auch in großen Programmen ist System.out.println() der eine wichtigste Befehl, der die fast alles zeigen kann


bisher arbeitest du mit ‚dir‘, nicht mit einer Datei aus dem fileList-Array,

sollen überhaupt die ifs in der Schleife stehen, für alle f geprüft werden?
bisher nicht in der Schleife, und eben auf ‚dir‘, nicht ‚f‘,

muss solch grundlegendes erwähnt werden?
ein gewisses Grundgefühl, welcher Code vorliegt, was in Schleifen steht, welche Variablen bearbeitet werden, das solltest du haben,
im Zweifel dann lieber dreimal drüber schauen und evtl. mit System.out.println() prüfen, bevor du andere den Code anbietest :wink:

ob die Namen der CSV wirklich mit 1 oder 2 enden, da habe ich so meine Zweifel,
aber kannst du ja alles mit System.put.println() untersuchen und sicherlich eine passende Bedingung formulieren, naja vielleicht auch wieder schwer…


was du mit ‚mod‘ vorhast ist weder im Code noch deinen Test allzu deutlich,
aber kann nach anderen Problemen ja auch noch konstruktiv angegangen werden,

bei derart großen Problemen besser nur kleine Schritte nacheinander, nicht alles gleichzeitig inklusive JFreeChart

Mein Computer ist gerade abgestürzt, da waren außerirdische Kräfte am Werke, der Standardgateway hat sich auch verstellt, das Internet ging nicht mehr, und nicht mal eine Entschuldigung von Firefox, das hätte nicht passieren dürfen… Edit: erst mal Mittagspause.

Jau…

In der .csv stehen zwei Timestamps und einmal Temperatur… Achso, das eine ist utc, das andere local,

möchtest du dann pro .csv einen Line Plot darstellen (das heißt doch line plot?)?


Allgemein, wie SlaterB gerade schrieb, ist es erst mal sinnvoll, alle Gedanken zu ordnen. :wink:


Ich nehme an, long mod ist ein Zeitpunktwert, der im Chart dargestellt werden soll,

es ist sinnvoll, alle Werte erst mal in ein int/float -Array o. Ä. zu legen, und dafür eine Methode.

okay, so ein „Grundprogramm“ habe ich mir auch schon zusammengebastelt. Mein Problem dabei ist, denke ich aber, dass ich nicht wirklich auf eine einzelne csv-Datei aus dem Verzeichnis zugreifen kann oder nicht ansprechen kann & deshalb dachte ich probier es gleich mal im „großen, ganzen“ Code.
Einlesen ist selber ja mit File & Buffered Reader kein Problem. Aber wie ich jetzt aus der eingelesenen zweiten Zeile (1) in der Textdatei auf das csv-Dokument verweise ist mir ein Rätsel. Soll ich es dann vielleicht mit einem Scanner probieren??

Wenn ich mir die zweite Zeile aus der txt auslesen lasse, erscheint auf der Konsole die 1, also lesen klappt schon mal richtig :wink:

ja, richtig. Ich möchte durch die Zahl in de Textdatei auswählen können, welchen export ich grafisch darstellen lasse.

Sie enden wiklich so :wink: Den Output habe ich mir überlegt nach lastModifiedTime zu ordnen

public class AllFiles {

 public static void main(String[]args) throws IOException
 {
    File dir = new File("../Einlesen/TestzumPfad.txt");
    sortFilesByName(dir);
 }
private static void sortFilesByName(File dir) throws IOException {
	// Read from the file
    BufferedReader br = new BufferedReader(new FileReader(dir));
    String path1  = br.readLine();
    String path2 = br.readLine(); 
    br.close();
    new File (path1); 

	File[] fileList = new File (path1).listFiles(new FilenameFilter() {  
        public boolean accept(File dir, String name) {
            return name.endsWith(".csv");
        }
    });

    // Sort files by name
    Arrays.sort(fileList, new Comparator(){
        @Override
        public int compare(Object f1, Object f2) {
            return ((File) f1).getName().compareTo(((File) f2).getName());
        }
    });
    for(File f : fileList){
        if(f.isDirectory())
           sortFilesByName(f);
        if(f.isFile()){
            System.out.println(f.getName());
            
        }
    }
    System.out.println(path2);
//Here is a huge building site
   long mod = 0; 
   File found; 
     if (path2.equals(1) && dir.isFile() && dir.getName().toLowerCase().endsWith(".csv") && dir.lastModified() > mod){
     mod = dir.lastModified(); 
     found = dir; 
    }
    else if (path2.equals(2) && dir.isFile() && dir.getName().toLowerCase().endsWith(".csv") && dir.lastModified() > mod){
             mod = dir.lastModified(); 
             found = dir; 	
    }
 }
}

Programm kürzer, path2 ist ‘1’ nach Ausgabe, soweit so gut

wozu der rekursive Aufruf in der fileList-Schleife sortFilesByName(f); ?
wenn f da ein Directory ist, wird Einlesen als Txt-Datei nicht gehen, dir ganze Variable ‘dir’ etwas falsch benannt,

außerdem, willst du überhaupt eine weitere Txt mit weiterer Ziffer 1 oder 2 usw. einlesen?
bisher nicht die Rede davon,
kommentarlos solcher Code neu, der hilft nicht viel weiter


die ifs am Ende auf ‘dir’ arbeiten weiterhin nicht, passt ja auch konzeptionell nicht,
was hast du, in Worten ausgedrückt, an dieser Stelle vor?

viel passender erscheint, in der Schleife über fileList das jeweilige f zu prüfen,
zwei ifs für 1 und 2 braucht es da auch nicht: wenn f mit path2 ‘endet’ dann ist f ein gutes Ergebnis,
-> in found merken, nach der Schleife in found etwas vorliegen haben

Es dürfte nicht funktionieren, aber nur so funktioniert es…in der ursprünglichem Code erfolgt das ganze ohne das Directory f, da aber hier die Textdatei in der Main aufgerufen wird, funktioniert es so.

Ich möchte eigentlich nur die csv- Dateien, die soweit ich das verstanden habe in der fileList enthalten sind aufrufen…und zwar bei einer 1(in der zweiten Zeile der Textdatei), das csv mit der 1 am Ende (& das Aktuellste). Bei einer 2 (in der Textdatei), dann das csv mit einer 2 im Namen.

Hier benenne ich sie, aber wie ich dann auf sie in einer Schleife zugreifen kann, weiß ich echt nicht…

File first = fileList [0]; 
File second = fileList[1]; 

Ich versteh da leider gar nicht was du meinst…mit 1 oder 2 möchte ich doch auswählen können, welches csv-Datei ausgewählt wird, wie kann ich sie dann nicht mehr brauchen? Vielleicht versteh ich dich auch nur total falsch :frowning:

Ich würde wirklich gerne helfen, bin aber irgendwie sehr verwirrt beim Durchlesen des Threads und deines Codes. Im Groben verstehe ich, was du machen möchtest, allerdings ist das Vorgehen “wie” du deine Dateien einliest sehr verwirrend für mich und dazu kommt dann noch die Benennung der Variablen.

Zum Beispiel:
File dir = new File("../Einlesen/TestzumPfad.txt")
Du hast da doch ganz klar eine Datei, keinen Ordner, wieso heißt das ‘dir’? Wahrscheinlich, weil du ausdrücken willst, dass sich in der Datei eine Liste mit Ordnern befindet, du darfst aber auch gerne einen Namen wählen, der eben das ausdrückt. Scheu dich nicht davor, längere Variablennamen zu nutzen. Gleiches gilt dann für path1, path2, f, usw. Das macht auch die Gedankengänge beim drübergucken viel klarer.

Kannst du mir das nochmal ganz genau erklären? Deine Dateistruktur hab ich jetzt so aufgefasst:

  • datei.txt
  • datenverzeichnis
  • export_test_practise-1_yyyy-mm-dd_yyyy-mm-dd.csv
  • […]
  • export_test_practise-2_yyyy-mm-dd_yyyy-mm-dd.csv
  • […]

So und der Inhalt der datei.txt sieht dann, falls er exercise_1-Dateien einlesen soll so aus:
dateiverzeichnis
1

Richtig? Und dann geht’s dir darum die CSV-Datei mit dem aktuellsten Datum einzulesen, richtig?
Ich verstehe leider nämlich nicht wirklich, was dann die Sortierung und der darauf folgende Durchlauf bezwecken soll. Liegen im “datenverzeichnis” weitere Unterordner?

hier ein Code ohne Rekusion, der die fileList durchgeht (durch FileFilter sollten es eh nur CSV sein, keine Directories),
jedes File akzeptiert und das mit dem höchsten modified auswählt:

 private static void sortFilesByName(File txtFile)
        throws IOException
    {
        // Read from the file
        BufferedReader br = new BufferedReader(new FileReader(txtFile));
        String path = br.readLine();
        String nrString = br.readLine();
        br.close();
        File[] fileList = new File(path).listFiles [..]

        // Sort files by name
        Arrays.sort(fileList, [..]

        long mod = 0;
        File found = null;
        System.out.println("nrString: " + nrString);
        for (File f : fileList)
        {
            System.out.println(f.getName());

            boolean fileNameOkForNrString = true;
            if (fileNameOkForNrString && f.lastModified() > mod)
            {
                mod = f.lastModified();
                found = f;
            }
        }
    }

verstehst du wie hier alle Files der fileList durchlaufen werden, eins davon in found gemerkt?

wenn du dieses Grundkonzept akzeptierst, kannst du als nächstes daran gehen, den boolean fileNameOkForNrString so zu befüllen, dass nur Dateinamen gewählt werden, die zu nrString = “1” oder “2” passen

name.endsWith() hilft wohl kaum, die Dateien enden ja mit .csv,
contains() ist vielleicht etwas ungenau,

wenn ein Dateiname export_test_practise-1_2017-06-24_2017-06-24.csv ist, dann vielleicht contains(“practise-1”) hilfreich, also “practise-”+nrString zusammenbauen oder gleich in die zweite Zeile der TXT als Key eintragen statt nur “1” oder “2”

Also einerseits gibt es eine Datei, in der zu wählende Verzeichnis + Datei steht, andererseits sollen alle Dateien nach lastModified sortiert werden und erste/letzte Datei gewählt werden - oder verstand ich jetzt etwas falsch?
Ich kann auch mit Code behilflich sein - aber nicht mehr heute. :wink:

Wie schaut’s hier, @kakulala ? Ich wollte mich gestern schon dadran begeben, bis mir eingefallen ist, dass ich auch Verzeichnisse, Dateien und Daten randomisiert zusammenstellen muss, und dafür am Besten eine KI brauche - was mir dann doch zu viel Aufwand darstellte. In dem Thema bin ich noch nicht richtig fit - siehe einen schlauen Graphen für A* erstellen… Alternativ kannst du auch einfach die Verzeichnisstruktur mit den Temperaturwerten zippen und hier hochladen - INSOFERN das KEINE hochsensiblen, persönlichen Daten sind. Dann stehen in diesen Thread ja schon eine ganze Menge Informationen,: Gedanken ordnen, in Methoden splitten, Arrays als Zwischenformat usw. usf. Teile das große Problem in viele kleine Problem. Also ich fänd’s schade, wenn du jetzt sagst, ne interessiert mich alles nicht mehr. :frowning:

Sieh’s mal so: Die ersten 1-2 Semester sind jetzt ®um, und du konntest dir schon viel Wissen aneignen - musst es jetzt aber noch ordnen. Wahrscheinlich hast du auch viele Bekanntschaften geschlossen, die dem aber nicht unbedingt förderlich erscheinen. :sunny:

wie so oft gilt: alles von CyborgBeta an kruden Ideen (KI…) + unnötigen Rückfragen idealerweise ignorieren,

jeder Kommentar dazu ist unschön, aber genauso all das was von CyborgBeta geschrieben ist,
und dann vielleicht zu einer Rückmeldung genötigt usw.

krude Idee wie KI, das stimmt, das macht das Problem vielleicht noch größer, als es ohnehin schon ist…

(unnötige) Rückfragen… das nennt sich Smalltalk, und gehört vielleicht dazu, um eine wohlige, angenehme Arbeitsatmosphäre zu schaffen… Du weißt auch, dass später 80 % social skills zählen…

zu einer Rückmeldung „genötigt“… aufgeklärte, rational denkende und handelnde Wesen fühlen sich von einer einfachen Rückfrage nicht bedrängt… hoffe ich.


Mit randomisiert zusammenstellen meinte ich einfach Folgendes:

    public static void main(String[] args) throws FileNotFoundException {
        aCreateFiles();
    }

    static void aCreateFiles() throws FileNotFoundException {
        // the variables...
        Random rando = new Random(0);
        SimpleDateFormat form1 = new SimpleDateFormat("_yyyy-MM-dd_yyyy-MM-dd");
        SimpleDateFormat form2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");

        // the dirs...
        File dir = new File("myDir\\config");
        dir.mkdirs();
        dir = new File("myDir\\data");
        dir.mkdirs();
        File config = new File("myDir\\config\\config.txt");
        try (PrintWriter write = new PrintWriter(config)) {
            write.println("myDir\\data");
            write.println(rando.nextInt(50) + 1);
            write.flush();
        }

        // the temperatures...
        for (int j = 0; j < 50; j++) {
            Date date = new Date();
            date = new Date(date.getTime() - (long) (rando.nextDouble() * ((long) 1000 * 60 * 60 * 24 * 31)));
            File dat = new File("myDir\\data\\export_test_practise-" + (j + 1) + form1.format(date) + ".csv");
            try (PrintWriter write = new PrintWriter(dat)) {
                for (int k = 0; k < 15; k++) {
                    form2.setTimeZone(TimeZone.getTimeZone("UTC"));
                    write.print(form2.format(date));
                    write.print(",");
                    form2.setTimeZone(TimeZone.getDefault());
                    write.print(form2.format(date));
                    write.print(",");
                    write.println(rando.nextInt(11) + 15 + ((int) (rando.nextFloat() * 100) / 100f)); // 15 - 25.xx Grad
                    date = new Date(date.getTime() + 1000 * 60 * 60);
                }
                write.flush();
            }
        }
    }

Z. B. export_test_practise-1_2017-07-12_2017-07-12.csv :

2017-07-12T13:48:20Z,2017-07-12T15:48:20+02:00,20.63
2017-07-12T14:48:20Z,2017-07-12T16:48:20+02:00,17.55
2017-07-12T15:48:20Z,2017-07-12T17:48:20+02:00,21.59
2017-07-12T16:48:20Z,2017-07-12T18:48:20+02:00,15.33
2017-07-12T17:48:20Z,2017-07-12T19:48:20+02:00,17.38
2017-07-12T18:48:20Z,2017-07-12T20:48:20+02:00,20.98
2017-07-12T19:48:20Z,2017-07-12T21:48:20+02:00,16.87
2017-07-12T20:48:20Z,2017-07-12T22:48:20+02:00,20.94
2017-07-12T21:48:20Z,2017-07-12T23:48:20+02:00,25.27
2017-07-12T22:48:20Z,2017-07-13T00:48:20+02:00,22.12
2017-07-12T23:48:20Z,2017-07-13T01:48:20+02:00,24.14
2017-07-13T00:48:20Z,2017-07-13T02:48:20+02:00,19.02
2017-07-13T01:48:20Z,2017-07-13T03:48:20+02:00,21.54
2017-07-13T02:48:20Z,2017-07-13T04:48:20+02:00,19.96
2017-07-13T03:48:20Z,2017-07-13T05:48:20+02:00,15.1

(sollte bei wegen Random(0) auch auch so ausschauen)

Dass bei XXX (ISO 8601 Time zone) und GMT+00:00 SimpleDateFormat nur Zulu-Time (nur ‚Z‘) schreibt, ist etwas unschön, und konnte ich jetzt nicht umgehen.

Noch etwas: Für Pfade kann nicht nur in anderen OS als Windows auch nur ‚/‘ geschrieben werden.

Naja, so halb unser Dozent hat uns das mal so erklärt dass wir eine Datei, die auf ein Verzeichnis verweist bzw einliest, immer im bestenfall dir nennen sollen, so kennt sich jeder aus. Ich verstehe aber dass das bspw bei meinem Code zu unnötiger Verwirrung führt.

Mein Datenstruktur:

  • datei.txt
    H:/
    1

  • H:/
    export_test_practise-1_2017-06-23_2017-06-23.csv
    export_test_practise-1_2017-06-24_2017-06-24.csv
    export_test_practise-2_2017-06-24_2017-06-24.csv

Mir ist klar, wie hier alle Files der fileList durchlaufen werden & auch dass ein File in found gespeichert wird, aber wieso du hier ein File aus der Liste speicherst ist mir nicht ganz klar…:frowning: