Hallo,
ich habe die letzten Tage an einem kleinen Programm gearbeitet, welches bereits vorhandene Videodateien, nach einem speziellen, von mir festgelegten Chema umbenennt.
So sieht die Bezeichnung der Datei vorher aus:
"[Genre] Name/n der Darsteller/s (Bezeichnung des Videos _ Datum der Aufnahme).mp4"
So soll es nachher aussehen:
"Name/n der Darsteller/s - Bezeichnung des Videos"
Dann gibt es noch verschiedene Sonderfälle:
1. Es gibt keine "Bezeichnung des Videos"
In diesem Fall soll stattdessen das Genre, ohne "[]" genommen werden.
2. Es gibt mehrere Darsteller
Am Beispiel von 3 Darstellern, sind diese durch ein ", " getrennt. Dieses soll durch "&" ersetzt werden.
z.B.: "Darst._1 & Darst._2 & Darst._3 - Videobezeichnung.mp4"
Ich habe das Programm soweit fertig. Es liegen momentan zwei Versionen vor, eine mit GUI, die andere ohne.
Ich habe das Programm gestern an ein paar Testvideos ausprobiert. Hat auch wunderbar funktioniert, als ich allerdings die Anzahl der Testvideos stetig erhöht habe, kamen irgendwann verschiedene Fehler. Einer davon war dieser hier:
1. IndexOutOfBoundsException, obwohl ich keine i+1 oder sowas verwendet habe.
Ein Hinweis noch: Die Variablen genreOld und genreNew sind Teil der Problemstellung 1.
Hat irgendjemand eine Idee, warum diese Fehler kommen?
Hier ist mein Programm:
ich habe die letzten Tage an einem kleinen Programm gearbeitet, welches bereits vorhandene Videodateien, nach einem speziellen, von mir festgelegten Chema umbenennt.
So sieht die Bezeichnung der Datei vorher aus:
"[Genre] Name/n der Darsteller/s (Bezeichnung des Videos _ Datum der Aufnahme).mp4"
So soll es nachher aussehen:
"Name/n der Darsteller/s - Bezeichnung des Videos"
Dann gibt es noch verschiedene Sonderfälle:
1. Es gibt keine "Bezeichnung des Videos"
In diesem Fall soll stattdessen das Genre, ohne "[]" genommen werden.
2. Es gibt mehrere Darsteller
Am Beispiel von 3 Darstellern, sind diese durch ein ", " getrennt. Dieses soll durch "&" ersetzt werden.
z.B.: "Darst._1 & Darst._2 & Darst._3 - Videobezeichnung.mp4"
Ich habe das Programm soweit fertig. Es liegen momentan zwei Versionen vor, eine mit GUI, die andere ohne.
Ich habe das Programm gestern an ein paar Testvideos ausprobiert. Hat auch wunderbar funktioniert, als ich allerdings die Anzahl der Testvideos stetig erhöht habe, kamen irgendwann verschiedene Fehler. Einer davon war dieser hier:
1. IndexOutOfBoundsException, obwohl ich keine i+1 oder sowas verwendet habe.
Ein Hinweis noch: Die Variablen genreOld und genreNew sind Teil der Problemstellung 1.
Hat irgendjemand eine Idee, warum diese Fehler kommen?
Hier ist mein Programm:
Java:
import java.io.*;
import java.util.ArrayList;
public class Sorted_easy {
private static File files = new File( "P:/New Files" );
private static File file[] = files.listFiles();
private static String genreOld = "P:/genre-old.txt";
private static String genreNew = "P:/genre-new.txt";
public static void main( String[] args ) throws IOException {
for( int i=0; i!=file.length; i++ ){
String name = file[i].getName();
String actor = nameOfActor( name );
String video = nameOfVideo( name );
String result = actor + "- " + video;
String result2 = capitalLetter(result);
System.out.println(result);
System.out.println(result2);
rename(file[i], result2);
}
}
public static ArrayList <String> auslesen(String a) throws IOException{
BufferedReader br = new BufferedReader( new FileReader(a) );
ArrayList <String> table = new ArrayList <String>();
String zeile = "";
while( (zeile = br.readLine() ) != null ){
table.add(zeile);
}
br.close();
return table;
}
public static String nameOfActor (String a){
String last = "";
if( a.contains(",") ){
String part1[] = a.split("]");
String part2[] = part1[1].split("\\(");
last = part2[0].substring(1).replace(",", " &");
}
else{
String part1[] = a.split("]");
String part2[] = part1[1].split("\\(");
last = part2[0].substring(1);
}
return last;
}
public static String nameOfVideo (String b) throws IOException{
String nameOfVideo = "";
ArrayList <String> alt = auslesen( genreOld );
ArrayList <String> neu = auslesen( genreNew );
String genre[] = b.split("]");
if( alt.contains( genre[0].substring(1) ) ){
int indexOld = alt.indexOf( genre[0].substring(1) );
nameOfVideo = neu.get( indexOld );
}
else{
String part1[] = b.split("\\(");
String part2[] = part1[1].split("_");
nameOfVideo = part2[0];
}
return nameOfVideo;
}
public static void rename (File o, String n) throws IOException{
File file2 = new File(files + "/" + n + ".mp4");
if (file2.exists()){
throw new java.io.IOException("file exists");
}
boolean success = o.getAbsoluteFile().renameTo(file2);
if (!success) {
}
}
public static String capitalLetter (String c){
char array[] = c.toCharArray();
array[0] = Character.toUpperCase(array[0]);
for(int i = 1; i < array.length; i++){
if(array[i-1] == ' '){
array[i] = Character.toUpperCase(array[i]);
}
}
String b = new String(array);
return b;
}
}
Zuletzt bearbeitet von einem Moderator: