Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo zusammen,
ich habe mal wieder eine kleine Frage.
Habt ihr eine Idee wie ich herausfinden kann,
was die letzte Datei in einem Ordner ist wenn
alle Dateien Bild01 heißen wobei 01 eine fortlaufende
Nummer ist. Am ende soll das Programm Die Datei
so abspeichern, dass die Nummer genau eine Zahl
größer ist als die vorhergehende.
Du kannst dir ein File-Objekt für das Verzeichnis holen, da gibt es eine Methode listFiles, die dir alle Dateinamen zurückgibt. Zum Beispiel so:
Java:
File dir = new File("pfad");
File[] files = dir.listFiles();
Nun hängt es stark vom Betriebssystem ab, in welcher Reihenfolge die Dateien sind. Deshalb würde ich sie in einer Liste speichern und diese sortieren:
Java:
Arrays.sort(files, new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
return o1.getName().compareTo(o2.getName());
}
});
Danach steht am Ende von files der Datei-Eintrag mit dem lexikographisch größten Dateinamen. Hilft dir das schon weiter oder ist das Erhöhen dann das nächste Prolem?
Über die getName-Methode des File-Objekts kommst du an den Dateinamen. Diesen musst du nun zerlegen. Wenn du zu 100% garantieren kannst, dass dieser *immer* das Format "Bild..." hat, kannst du subString verwenden, um den Teil hinter "Bild" zu bekommen, in einen int zu verwandeln und zu erhöhen:
Hm.. wenn ich etwas erkläre, möchte ich eigentlich, dass der Fragensteller das versteht und dann selbst umsetzt. Programmieren lernt man nicht durch Copy'n'Paste
Wenn die bisherigen Antworten noch nicht zur Umsetzung reichen, fehlen dir noch Grundlagen - vermutlich zu Arrays und zur String-Verarbeitung. Wir helfen dir gern dabei, das zu verstehen, aber du lernst nur etwas, wenn du es letztendlich mit dem neuen Wissen ganz allein umsetzt
Ja das verstehe ich, jedoch verstehe ich den Teil
mit Arrays.sort nicht!
Wenn ich dich richtig verstehe ist files ein Array
in dem alle Dateien gespeichert sind. Um die letzte
zu bekommen müsste ich doch nur den letzten
Eintrag des Arrays auslesen.
Wenn ich jetzt falsch liege sags mir!
PS ich bekomme eine Exception bei Arrays.sort
Java:
Exception in thread "main" java.lang.NullPointerException
at java.util.TimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at de.dietz.main.FrameTest.main(FrameTest.java:14)
Sieht eher so aus, als ob du files nicht via listFiles() initialisiert hast. Oder du hast das Beispiel 1:1 kopiert und da steht noch "pfad" statt des tatsächlichen Pfads, sodass das File-Objekt ungültig ist.
Wenn files null ist, würde ich sagen, dass der Pfad ungültig ist / nicht existiert. Ich weiß nicht, ob man in Java Pfade mit Laufwerksbuchstaben und so angeben kann, hab Java noch nie unter Windows benutzt.
Deine Umgebung möchte dir helfen, den Fehler zu finden und fragt dich, ob du in den Fehler-Finde-Modus wechseln möchtest. Aber wir haben den Fehler ja auch so gefunden: files ist null. Dabei kann dir die Umgebung nicht helfen, es liegt am Pfad.
Ich habe das ganze noch mal überprüft!
Der angegebene Pfad existiert und ist
ein Ordner, der 2 Dateien enthält.
Ich kann mir aber nicht erklären warum
files dann null ist!