2016-04-24 11 views
0

Ich arbeite an einem Programm, das die Namen jeder Datei und Unterordner in einem bestimmten Verzeichnis drucken muss.Verbesserung der Dateinamen Lesbarkeit in Java

Bisher habe ich folgende (dies ist nur der Arbeitscode):

File directory = new File([the path]); 

File[] contents = directory.listFiles(); 

for (File f : contents) 
{ 
    String currentFile = f.getAbsolutePath(); 
    System.out.println(currentFile); 
} 

Dies wird den Benutzer angezeigt werden soll, die nicht den vollständigen Pfad sehen muss. Wie kann ich die Ausgabe nur die Dateinamen erhalten?

+0

http://stackoverflow.com/questions/4545937/java-splitting-the-filename-into-a-base-and-extension –

+0

Vielen Dank für schnell antworten, aber was ich will, ist etwas anderes - oder deine Antwort funktioniert, aber ich bin nicht schlau genug, es umzusetzen. – LurkerMcMe

+0

Verwenden Sie die Methode getName() aus der Dateiklasse – JavaHopper

Antwort

0

Der Dateiname wird als einfacher String gedruckt, was bedeutet, dass er bearbeitet werden kann. Alles, was Sie tun müssen, ist Str.replace auf Ihrem Weg zu verwenden.

Dieser Code currentFile = currentFile.replace(" [der Pfad] ", ""); würde Ihren Dateipfad durch ein Leerzeichen ersetzen, effektiv löschen.

Einige korrekt eingegebene Code, wie

for (File f : contents) 
{ 
    currentFile = f.getAbsolutePath(); 
    currentFile = currentFile.replace("[the path]", ""); 
    System.out.println(currentFile); 
} 

wird dies tun, jedes für Ihr Programm findet Datei. Dies sollten Sie

File directory = new File("\\your_path"); 
File[] contents = directory.listFiles(); 
for (File f : contents) { 
    System.out.println(f.getName()); 
} 
+0

Warum dies tun, wenn die Dateiklasse bereits eine Methode zum Abrufen des Dateinamens bereitstellt? – JavaHopper

1

(aus irgendeinem Grund), so gibt es eine Möglichkeit, den String zu spalten. Sie schneiden nur den Teil vor dem Schrägstrich (/) und nehmen alles, was übrig ist. Wie Sie es aufgeteilt, könnte es sein (und wahrscheinlich ist), um mehrere Schrägstriche, so dass Sie nur den letzten Teil nehmen

String currentFile; 
String[] parts; 
for (File f : contents) { 
    currentFile = f.getAbsolutePath(); 
    parts = currentFile.split("/"); 
    if (!parts.equals(currentFile)) { 
     currentFile = parts[parts.length-1]; 
    } 
    System.out.println(currentFile); 
} 

Beispiel:
„file: /// C:/Users/Ordner/Desktop/a.html "geht zu" a.html "

1

Ich nehme an, dass manchmal helfen wissen Sie vielleicht nicht den Weg Basis

+0

Warum dies tun, wenn die Dateiklasse bereits eine Methode zum Abrufen des Dateinamens bereitstellen? – JavaHopper

+0

@JavaHopper Sie haben Recht. Upvote zu Ihrer Antwort. Aber gut - zumindest meine Arbeit. : D –

+0

Teilweise um JavaHopper zu beantworten, ist diese Antwort am meisten modular - sie könnte für andere ähnliche Aufgaben verwendet werden. –