Ich schreibe ein Programm mit welchem ich neue MP3-Dateien in meine bestehende MP3-Sammlung einsortieren kann.
Das Programm wird in einem Ordner aufgerufen und soll alle MP3-Dateien darin wegsortieren.
Beispiel:
Das Programm wird aus dem Ordner \Musik\Sortieren aufrufen. Darin befinden sich:
Nelly - Test.mp3
Nelly feat. Justin Timberlake - Test.mp3
Nelly Furtado - Test.mp3
Nelly Fiktiv - Test.mp3
Mein Ziel ist nun, das die Dateien folgendermaßen sortiert werden:
\Musik\N\Nelly\Nelly - Test.mp3
\Musik\N\Nelly\Nelly feat. Justin Timberlake - Test.mp3
\Musik\N\Nelly Furtado\Nelly Furtado - Test.mp3
\Musik\N\Nelly Fiktiv\Nelly Fiktiv - Test.mp3
Wie man sieht hat jeder Interpret einen eigenen Ordner, aber nicht wenn er etwas mit einem anderem zusammen gemacht hat. Das kommt quasi in den Ordner des ersten Interpreten.
Das momentane Programm schafft es die ersten drei richtig zu sortieren, erstellt für den vierten aber keinen neuen Ordner sondern sortiert ihn unter Nelly mit ein.
Ich hoffe jemand kann mir bei der Weiterentwicklung des Algorithmus weiterhelfen.
Das Programm wird in einem Ordner aufgerufen und soll alle MP3-Dateien darin wegsortieren.
Beispiel:
Das Programm wird aus dem Ordner \Musik\Sortieren aufrufen. Darin befinden sich:
Nelly - Test.mp3
Nelly feat. Justin Timberlake - Test.mp3
Nelly Furtado - Test.mp3
Nelly Fiktiv - Test.mp3
Mein Ziel ist nun, das die Dateien folgendermaßen sortiert werden:
\Musik\N\Nelly\Nelly - Test.mp3
\Musik\N\Nelly\Nelly feat. Justin Timberlake - Test.mp3
\Musik\N\Nelly Furtado\Nelly Furtado - Test.mp3
\Musik\N\Nelly Fiktiv\Nelly Fiktiv - Test.mp3
Wie man sieht hat jeder Interpret einen eigenen Ordner, aber nicht wenn er etwas mit einem anderem zusammen gemacht hat. Das kommt quasi in den Ordner des ersten Interpreten.
Das momentane Programm schafft es die ersten drei richtig zu sortieren, erstellt für den vierten aber keinen neuen Ordner sondern sortiert ihn unter Nelly mit ein.
Ich hoffe jemand kann mir bei der Weiterentwicklung des Algorithmus weiterhelfen.
Code:
package createOrdner;
import java.io.File;
public class CopyDateien {
public static void main(String[] args)
{
File verzeichnis=new File(".");
System.out.println(verzeichnis.getAbsolutePath());
File[] dateien = verzeichnis.listFiles();
if (dateien!=null)
{
for (int i=0; i<dateien.length; i++)
{
//System.out.println(dateien[i].getAbsolutePath());
//Wenn Datei kein Ordner, aber eine Standard-MP3-Datei ist wird sie verschoben
if(dateien[i].isFile()&&dateien[i].getName().endsWith("mp3")&&dateien[i].getName().contains(" - "))
{
//Interpreten extrahieren
String dateiname=dateien[i].getName();
String anfangsbuchstabe=dateiname.substring(0, 1);
String interpret=dateiname.substring(0, dateiname.indexOf(" - "));
//Prüfen ob bereits ein Ordner für diesen Interpreten existiert
boolean ordnerVorhanden=false;
String ordner=verzeichnis.getAbsolutePath().substring(0, verzeichnis.getAbsolutePath().lastIndexOf("\\"));
ordner=ordner.substring(0, ordner.lastIndexOf("\\"));
ordner=ordner+"\\"+anfangsbuchstabe;
File unterverzeichnis=new File(ordner);
File[] interpretenOrdner=unterverzeichnis.listFiles();
if (interpretenOrdner!=null)
{
for (int j=0; j<interpretenOrdner.length; j++)
{
if(dateiname.contains(interpretenOrdner[j].getName()+" "))
{
ordnerVorhanden=true;
ordner=interpretenOrdner[j].getAbsolutePath();
}
}
}
//Wenn bereits ein Ordner vorhanden ist, die Datei hier hinein kopieren
if (ordnerVorhanden)
{
File quelle = new File(dateien[i].getAbsolutePath().replace(".\\", ""));
File ziel = new File(ordner+"\\"+dateiname);
if(quelle.renameTo(ziel))
{
System.out.println("Datei "+dateiname+" kopiert nach "+ordner);
}
else
{
System.out.println("Kopieren von "+ordner+"\\"+dateiname+" fehlgeschlagen");
}
}
//Wenn kein Ordner vorhanden ist, Ordner erstellen und Datei anschließend hinein kopieren
else
{
File neu=new File(ordner+"\\"+interpret);
if(!neu.mkdir()&&!neu.exists())
{
System.out.println("Erstellen von "+ordner+"\\"+interpret+" fehlgeschlagen");
}
else
{
System.out.println("Ordner "+ordner+"\\"+interpret+" erstellt");
}
File quelle = new File(dateien[i].getAbsolutePath().replace(".\\", ""));
File ziel = new File(ordner+"\\"+interpret+"\\"+dateiname);
if(quelle.renameTo(ziel))
{
System.out.println("Datei "+dateiname+" kopiert nach "+ordner+"\\"+interpret);
}
else
{
System.out.println("Kopieren von "+ordner+"\\"+interpret+"\\"+dateiname+" fehlgeschlagen");
}
}
}
}
}
}
}