[Java] Dateinamen umbennen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von die_kackwurst, 26. April 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 26. April 2010
    Dateinamen umbennen

    Hi!

    Ich würde sehr gerne meine dateinamen umbennen.. Gibt es eine Möglichkeit, dass mein Dateiname nach dem folgenden Schema umbenannt wird?

    Dateiname (alt): Hallo ich bin ein Test - Nummer Fünf (Ja).rar
    Dateiname (neu): HibeT-NF(J).rar

    Also sozusagen das ich alle Leerzeichen wegbekomme und nur noch die Anfangsbuchstaben der einzelnen Wörter habe?

    Wär super.. Hätte am meisten Interesse an nem Java-Code

    Mfg
     
  2. 26. April 2010
    AW: Dateinamen umbennen

    Code:
    public static String extractName(String Filename) {
     String[] nameExt = Filename.split("\\.");
     String[] parts = nameExt[0].split(" ");
     
     String result = "";
     
     for (String IterStr: parts) {
     if (!IterStr.startsWith("("))
     result += IterStr.charAt(0);
     else {
     result += IterStr.substring(0, 2);
     }
     
     if (IterStr.endsWith(")"))
     result += IterStr.charAt(IterStr.length() - 1);
     }
     
     return result + "." + nameExt[1];
     }
    Ausgabe:
    Code:
    System.out.println(GenerateName.extractName("Hallo ich bin ein Test - Nummer Fünf (Ja).rar")); //HibeT-NF(J).rar
    So würde ich es für den bestimmten Fall lösen, aber ist natürlich keine ultimative Lösung. Wenn du ein paar mehr Beispiele posten würdest, dann würde ich vllt was mit nem Regex basteln, was dann auch allgemeingültig wäre. (Das mit den Klammern nervt halt ein wenig)

    greez
     
  3. 26. April 2010
    AW: Dateinamen umbennen

    also ich wollte folgende dateien umbenennen...

    Red Hot Chili Peppers - Blood Sugar Sex Magik
    Red Hot Chili Peppers - By the Way
    Red Hot Chili Peppers - Californication
    Red Hot Chili Peppers - Cant Stop (Maxi)
    Red Hot Chili Peppers - Christmas Party '91 (Live)
    Red Hot Chili Peppers - Fortune Faded (Maxi)
    Red Hot Chili Peppers - Freaky Styley
    Red Hot Chili Peppers - Give It Away (Maxi)
    Red Hot Chili Peppers - Live In Hyde Park (Live)
    Red Hot Chili Peppers - Live Magik (Live)
    Red Hot Chili Peppers - Melodic Flea-Way (Live)
    Red Hot Chili Peppers - Mothers Milk (Live)
    Red Hot Chili Peppers - One Hot Minute
    Red Hot Chili Peppers - Organic Soundball (Live)
    Red Hot Chili Peppers - Out in L.A
    Red Hot Chili Peppers - Platinum Collection
    Red Hot Chili Peppers - Scar Tissue (Maxi)
    Red Hot Chili Peppers - Slane Castle (Maxi)
    Red Hot Chili Peppers - Soul To Squeeze (Maxi)
    Red Hot Chili Peppers - Stadium Arcadium
    Red Hot Chili Peppers - The Abbey Road EP
    Red Hot Chili Peppers - The Garden (Maxi)
    Red Hot Chili Peppers - The Uplift Mofo Party Plan
    Red Hot Chili Peppers - Under The Bridge (Maxi)
    Red Hot Chili Peppers - Under The Covers
    Red Hot Chili Peppers - Universally Speaking (Maxi)
    Red Hot Chili Peppers - Unpublished Songs

    die haben halt jeweils noch hinten dran .part###.rar

    hatte des jetzt so gemacht - is aber schlecht

    Code:
    import java.io.File;
    
    
    public class rename {
     public static boolean file_rename(File[] filename){
     int length = filename.length;
     String name = "";
     String prefix = "";
     String suffix = "";
     String new_name = "";
     boolean status = false;
     int start = 0;
     String startChar = "";
     
     File[] filename_new = new File[length];
     
     for (int i=0;i<length;i++){
     name = filename[i].getName();
     prefix = name.substring(0,name.lastIndexOf("."));
     suffix = name.substring(name.lastIndexOf("."),name.length());
     
     while (prefix.indexOf(" ")!=-1){
     startChar = prefix.substring(start,prefix.indexOf(" ")).substring(start, start+1);
     
     new_name = new_name+startChar;
     start = prefix.indexOf(" ");
     prefix = prefix.substring(start+1,prefix.length());
     start = 0;
     }
     
     startChar = prefix.substring(0,1);
     prefix = prefix.substring(prefix.lastIndexOf("."),prefix.length());
     new_name=new_name+startChar+prefix+suffix;
     
     filename_new[i] = new File(filename[i].getAbsolutePath().substring(0,filename[i].getAbsolutePath().lastIndexOf("\\")+1)+new_name);
     
     new_name = "";
     
     status = filename[i].renameTo(filename_new[i]);
     
     if (!status){
     System.out.println("Error renaming File "+filename[i].getName());
     }
     }
     return status; 
     }
    }
    
    hat soweit geklappt - gab nur probleme mit den klammern.. des musste ich denn mit der hand entfernen.. ne bessere lösung würd ich gerne sehen
     
  4. 26. April 2010
    AW: Dateinamen umbennen

    Hm, hab meine Methode angepasst, aber das müsste nun funzen:
    Code:
    public static String extractName(String Filename) {
     String[] nameExt = Filename.split("\\.");
     String[] parts = nameExt[0].split(" ");
     
     String result = "";
     
     for (String IterStr: parts) {
     if (!IterStr.startsWith("("))
     result += IterStr.charAt(0);
     else {
     result += IterStr.substring(0, 2);
     }
     
     if (IterStr.endsWith(")"))
     result += ")";
     }
     
     for (int i = 1; i < nameExt.length; i++) {
     result += "." + nameExt[i];
     }
     
     return result;
     }
    Folgende Dateinamen hab ich getestet:
    Code:
    System.out.println(extractName("Hallo ich bin ein Test - Nummer Fünf (Ja).rar"));
    System.out.println(extractName("Red Hot Chili Peppers - Blood Sugar Sex Magik.part55.rar"));
    System.out.println(extractName("Red Hot Chili Peppers - By the Way.part34.rar"));
    System.out.println(extractName("Red Hot Chili Peppers - Californication.part23.rar"));
    System.out.println(extractName("Red Hot Chili Peppers - Cant Stop (Maxi).part01.rar"));
    System.out.println(extractName("Red Hot Chili Peppers - Christmas Party '91 (Live).part13.rar"));
    Ausgabe:
    Code:
    HibeT-NF(J).rar
    RHCP-BSSM.part55.rar
    RHCP-BtW.part34.rar
    RHCP-C.part23.rar
    RHCP-CS(M).part01.rar
    RHCP-CP'(L).part13.rar
    greez
     
  5. 26. April 2010
    AW: Dateinamen umbennen

    geile sache jetzt würd ich den code nur gern noch verstehen
     
  6. 26. April 2010
    AW: Dateinamen umbennen

    Okay, is ganz easy erklärt.

    Beispiel:
    Red Hot Chili Peppers - Cant Stop (Maxi).part01.rar

    Zuerst Splitte ich den Dateinamen in Teile, die von einem Punkt getrennt sind in ein Array aus Strings.
    nameExt[0] = Red Hot Chili Peppers - Cant Stop (Maxi)
    nameExt[1] = part01
    nameExt[2] = rar

    (mit dem \\. escape ich erst den Backslash und damit dann den Punkt innerhalb des Regex, da die Split-Methode ein Regex erwartet)

    Danach Splitte ich die Teile, die noch zu dem Namen der Datei gehören überall da, wo ein Leerzeichen ist.

    parts[0] = Red
    parts[1] = Hot
    parts[2] = Chili
    parts[3] = Peppers
    parts[4] = -
    parts[5] = Cant
    parts[6] = Stop
    parts[7] = (Maxi)

    Dann iteriere ich durch alle Elemente des Arrays und extrahiere den ersten Buchstaben, falls dieser nicht "(" ist. Wenn doch, dann extrahiere ich die ersten beiden Buchstaben/Zeichen und hänge diese an den result String an.
    Dann wird geschaut, ob der String mit ) aufhört, dann wird noch ")" an den result String angehängt.

    Zu guter letzt iteriere ich noch durch alle Arrayelemente von nameExt >=1 und hänge sie mit einem angeführten Punkt noch an den result String und gebe ihn zurück

    greez
     
  7. 26. April 2010
    AW: Dateinamen umbennen

    mann ist ja richtig cool danke.. wusste net das es sone praktischen funktionen gibt - aber man lernt nur dazu dickes danke... BW is raus
     
  8. 27. April 2010
    AW: Dateinamen umbennen

    nice das mal zu verfolgen, lerne grad java

    heut bei meiner projektabgabe noch scanner und delimiter für sowas ähnliches benutzt, er schnackte mich noch an warum ich nicht split benutzt hätte. wobei ichs hier auch sinnvoll fände mit scan.next und delimiter zu arbeiten... ist das irgendwie besserer stil oder warum machen das alle? im prinzip kommt ja das selbe raus bzw kann man das selbe erreichen, oder irre ich mich da?
     
  9. 27. April 2010
    AW: Dateinamen umbennen

    mehr code, aber kein regex:
    (als alternative für leute die sowas interessiert - cable's code ist schöner!)

    Code:
    protected static String compressFilename(String name)
    {
     StringBuilder newName = new StringBuilder();
     
     int i = 0, l = name.length();
     
     main_for_loop:
     for(; i < l; ++i) {
     char c = name.charAt(i);
     if(c == 32) //whitespace
     continue;
     
     if(c == 46) { //dot
     --i;
     break;
     }
     
     if((c >= 65 && c <= 90) || (c >= 97 && c <= 122)) {
     while(l > i + 1) {
     char c2 = name.charAt(++i);
     if(c2 < 65 || (c2 > 90 && c2 < 97) || c2 > 122) {
     if(c2 != 32) --i;
     if(c2 == 46) {
     newName.append(c);
     break main_for_loop;
     }
     
     break; 
     }
     }
     }
     
     newName.append(c);
     }
     
     if(i != l)
     newName.append(name.substring(++i, l));
     
     return newName.toString();
    }
    zum nachschlagen hier ne ascii-tabelle: http://www.torsten-horn.de/techdocs/ascii.htm
    verkürzt ausdrücke [a-zA-Z]+ auf den ersten buchstaben. andere zeichen (außer leerzeichen) bleiben unberührt.
     
  10. 27. April 2010
    AW: Dateinamen umbennen

    alles klar danke an euch beide war interessant..
    BW's sind raus
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.