Datei auslesen Schleife

Ich habe ein Projekt gestellt bekommen wo ich mittels Java ein Programm schreibe das einen Ordner erstellt und eine jpg datei dort herein kopiert. So weit so gut, hab ich alles mit ein wenig Hilfestellung meines Ausbilders hinbekommen, nur soll ich nun eine Schleife erstellen in dem Code das er solange Ordner erstellt und Bilder kopiert solange Bilder vorhanden sind.
Hier der Code mal zum anschauen:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;

public class DateiAuslesen {

    private static BufferedReader br;

    private static void ladeDatei (String Bilderkopieren) throws IOException	{


        int counter = 0;
        String line;
        String[] splitResult;
        String[] picture = new String[100000];
        String[] folder = new String[100000];      
        StringBuffer buff = new StringBuffer();
        try {


            FileInputStream fis = new FileInputStream(Bilderkopieren);
            br = new BufferedReader(new InputStreamReader(fis, Charset.forName("UTF-8")));

            for (int i = 0;(line = br.readLine()) != null;i++) {
                splitResult = line.split(";");
                picture**= splitResult[0];
                folder**= splitResult[2];
                counter = counter + 1;
            }


        }catch (IOException e)  {
            e.printStackTrace();

        }


        String path = "D:/";
        File dir  = new File(path+ folder[0]);

        if (dir.mkdir())    {
            System.out.println("Ordner erstellt!");
        } else {
            System.out.println(dir + "konnte nicht erstellt werden");
        }
        File inF = new File("D:/"+folder[0]+"/"+picture[0]);
        File outF = new File("D:/bilder/"+picture[0]);
        copyFile (outF, inF); 
        System.out.println(buff.toString());

    }


    public static void copyFile(File in, File out) throws IOException  {
        FileChannel inChannel = null;
        FileChannel outChannel = null;
        try {

            inChannel = new FileInputStream(in).getChannel();
            outChannel = new FileOutputStream(out).getChannel();
            inChannel.transferTo(0, inChannel.size(),outChannel);
        } catch (IOException e) {
            throw e;
        }   finally {
            if (inChannel != null)
                inChannel.close();
            if (outChannel !=null)
                outChannel.close();

        }

    }
    public static void main(String[]args) throws IOException  {
        String dateiName = "D:/data.txt";
        ladeDatei(dateiName);

    }
}

Ob mir da ein weiser CodeMonkey helfen könnte?

Bitte benutze das nacähste Mal die Java TAGS so kann man deinen Code nicht lesen

Eigentlich schaut doch alles ganz gut aus,

du brauchst doch nur noch um diesen Block

File dir = new File(path+ folder[0]);

if (dir.mkdir()) {
System.out.println("Ordner erstellt!");
} else {
System.out.println(dir + "konnte nicht erstellt werden");
}
File inF = new File("D:/"+folder[0]+"/"+picture[0]);
File outF = new File("D:/bilder/"+picture[0]);
copyFile (outF, inF);
System.out.println(buff.toString());```

eine for Schleife bauen, die von 0 bis counter zählt und die indexes in diesem Codestück richtig setzen.

P.S. CodeMonkey ist eigentlich eine Beleidung und ist auch als Witz nicht besonders gelungen.

*** Edit ***

Auch solltest du vl die Zeilen in denen deine File in und out Objekte erstellt werden und den copyFile Aufruf in die if packen, sodass dieser nur ausgeführt wird, wenn das Verzeichnis erfolgreich angelegt wurde

Ich hab letztens Codemonkey gehört und fands sehr lustig. Wollte keinem auf die Füße treten.

Wie genau benutze ich die For Schleife da. Z.B. for(int i=0; i<5; i++); ?

Wo würde ich das einbauen am Ende des Blocks? Beschäftige mic herst seit 2 wochen mit Java und solchigem. Ich bin noch SEHR grün hinter den Ohren.

Einfach statt der 5 eine Variable einsetzen die die Anzahl der Bilder enthält.
Und wohin? Den Kopf über den Part der ja schon gepostet wurde.

Die for soll nicht nur bis 5 zählen sondern bis counter. da du ja mit dieser Variable zählst wieviele einträge in deiner Text datei waren.

weiters muss die for um den ganzen Block herum, also das anlegen des Ordners und das Copieren der Files muss ja für alle Einträge gemacht werden.

Ps. Ich glaub du hast auch bei dir inFile und outFile vertauscht.

Also eigentlich sind es 61K Bilder aber ich habe erstmal eine text datei in dem 5 Bilder Pfade stehen erstellt aus dem er sich die daten zieht da es mit 61k bilderdaten etwas lange dauert. Da wollte iche rstmal mit 5 rumprobieren.

das programm liest ja die namen der bilder und die namen des zu erstellenden ordners aus der am ende genannten text datei.

ob mir das jemand mal in dem block dazuschreiben kann ?

Ausserdem danke an den netten Admin der mir den Code oben in das richtige Format gesetzt hat :3

*** Edit ***

Vielen Dank . Ich habe es mit Hilfe von Aussen jetzt hinbekommen.
for (int i = 0; i < counter; i++) eingefügt und alle 0 mit i ersetzt jetzt erstellt und kopiert er fröhlich.

:*

Dass soll ja deinem Programm egal sein ob es nun 5 Bilder aus der Text Datei liest oder ob da 61000 Einträge stehen. mit counter zählst du ja eh wieviele einträge in der txt stehen.

Auch wenn es funktioniert, solltest du die Variablen namen des in und out files nochmal überarbeiten, so ist es verwirrend.

Ich denke mal, dass ihr noch keine Collections hattet, denn einfach mal Pi-mal-Daumen String[] picture = new String[100000]; zu schreiben ist schlechter Stil. Für’s Protokoll eine praxistauglichere Version:

        List<String> picture = new ArrayList<>();
        List<String> folder = new ArrayList<>();      
        try {
 
 
            FileInputStream fis = new FileInputStream(Bilderkopieren);
            br = new BufferedReader(new InputStreamReader(fis, Charset.forName("UTF-8")));
 
            for (String line = br.readLine(); line != null; line = br.readLine()) {
                String[] splitResult = line.split(";");  //Variablen-Scope möglichst klein halten
                if (splitResult.length < 3) {
                    //was nun?
                }
                picture.add(splitResult[0]);
                //was passiert eigentlich mit splitResult[1]?
                folder.add(splitResult[2]);  
            }
        } catch (IOException e)  {
            e.printStackTrace();
        }

Ist wohl ein wenig overkill fuer jemanden der sich seit 2 wochen mit java beschaeftigt. …