Dateien ins Array lagern und Optionen zur Auswahl,

florilu

Aktives Mitglied
Hallo,

da ich mich gerade viel mit Dateien, Ordnerstrukturen, usw. beschäftige, wollte ich mal nachfragen wie man die Dateien in einem Ordner auslesen kann (z.B. Backupordner), was ja einfach ist und ich schon kann, und dann in ein Array bzw. Liste packt und dann z.B. in einem Installer dann Optionen ausgeben lässt welches Backup man gerne verwenden würde, also z.B. so.

Code:
Backup1 [1]
Backup2 [2]
Backup3 [3]
...

Ich habe mal in Lua was identisches gemacht, aber die Dimensionen zwischen Lua und Java sind meines Ermessens nach, sehr riesig. (Davon abgesehen das Lua eine Skriptsprache ist)

Wenn ihr diesbezüglich Fragen habt, beantworte ich sie gerne.
Aber es währe durchaus gut zu wissen, wie ich das machen könnte.

MfG:
Florilu
 
naja...

wo issn das Problem?

Was hast du denn schon gemacht?

ich würde dir aber eine Liste empfehlen, anstelle eines Arrays...

du liest alle dateien ein, speicherst deren Referenz in einer Liste, die Files halten kann (oder Strings um nur die Dateinamen zu speichern, was evtl ein wenig geschickter wäre)

und dann hast du doch schon alles was du wolltest
 
Das Problem besteht darin das ich ja nicht nur die ganzen Sachen in eine List packen will.
(Ich denke du meinst so eine)
Java:
static ArrayList<File> fileSave = new ArrayList<File>();

Die Files in das Array packen ist ja kein Problem und habe ich so gelöst
Java:
File[] files = backupFolderMcAuto.listFiles();
			for(File file : files){
				fileSave.add(file);
			}
Aber am Ende sieht die Ausgabe so aus:
Code:
[C:\Users\Admin\AppData\Roaming\.EBGBackup\Backupped .minecraft's\AutoBackup (MinecraftFolder)\backup1.zip, C:\Users\Admin\AppData\Roaming\.EBGBackup\Backupped .minecraft's\AutoBackup (MinecraftFolder)\backup2.zip]

aber ich will ja das nur backup1.zip bzw. backup2.zip steht, aber mir ist die Konvertierung von File zu String komischerweise nie gelungen. Aber die Frage für mich ist, wie kann ich nachdem ich das in der List habe "backup1 [1]" oder "backup2 [2]" ausgeben um am Ende in der Eingabe 1 oder 2 angeben zu müssen um ein gewisses Backup wiederherzustellen, undzwar so das es auch bei mehreren Backups funktioniert da das Programm ja unendlich erzeugen kann, und keine Begrenzung eingebaut ist.
Und ich habe noch nie eine allgemeine Abfrage gemacht die auch für mehrere Sachen steht (mit || schon aber das bringt mich da ja nicht weiter).
Dieses Gebiet ist wie gesagt noch starkes Neuland für mich und auf Google finde ich ja auch nichts sinnvolles.

MfG:
Florilu
 
Aber am Ende sieht die Ausgabe so aus: [...]
Das liegt daran, dass Du wahscheinlich Deine Ausgaben durch simplen Aufruf von toString() machst. Entweder explizit oder implizit, indem Du direkt Objekte System.out.printlnst.
aber ich will ja das nur backup1.zip bzw. backup2.zip steht, aber mir ist die Konvertierung von File zu String komischerweise nie gelungen.
Dann kennst du wahrscheinlich die Methode nicht: File#getName(). Die kannst du auf dem File-Objekt aufrufen und für die Ausgabe benutzen.
 
Sry, das ich mich erst jetzt melde, aber manche Sachen gehen vor 😉

@nillehammer
1. Ok das hat sich ^^
2. Danke jetzt kriege ich den Namen raus.

Der ganze Code den ich zu dem Bereich habe

In der Deklaration:
Java:
static ArrayList<File> fileSave = new ArrayList<File>();

In der Abfrage:
Java:
File[] files = backupFolderMcAuto.listFiles();
			for(File file : files){
				fileSave.add(file);
			}
			System.out.println(fileSave);
			System.out.println(fileSave.get(1).getName());

Die Ausgabe ist wie zu erwarten:
Code:
[C:\Users\Admin\AppData\Roaming\.EBGBackup\Backupped .minecraft's\AutoBackup (MinecraftFolder)\backup1.zip, C:\Users\Admin\AppData\Roaming\.EBGBackup\Backupped .minecraft's\AutoBackup (MinecraftFolder)\backup2.zip]
backup2.zip

So vom Prinzip weiß ich jetzt auch wie ich eine "Tabelle" für das Installationsmenü anfertigen kann mit den ausgelesenen Inhalten (lässt sich ja leicht mit der for-Schleife lösen), so jetzt will ich wissen wie ich aus den ganzen Inhalten in dem Fall:
Code:
backup1.zip [1]
backup2.zip [2]
...

eine if-Abfrage machen kann die nicht "begrenzt denkt" und jeden Kram einzeln abfragt (sieht in erster Linie nicht schön aus und erfüllt auch nicht meine Bedingungen), sondern eine die für jede Sache steht so jetzt als Beispiel wir haben die Ausgabe über dem Abschnitt und geben 2 ein und betätigen ENTER, das er dann auch genau DAS Backup nimmt und installiert (Die Funktion fürs Installieren habe ich ja), aber das die gleiche if-Abfrage auch für backup1.zip oder backup3/4/ oder 5.zip abfragen kann ohne das ich explizit abfragen muss ob diese existieren. Denn der Nachteil währe bei einer expliziten Abfrage auf ein bestimmtes Objekt das ich begrenzt viele Abfragen eingebaut habe, und dann z.B. da 11 Backups gelistet sind, aber nur 10 Abfragen existieren, und man betätigt die 11 und das Programm findet es nicht und beendet sich, was ich aber nicht will.


MfG:
Florilu
 
Also ich hab deine letzten paar Sätze nicht ganz verstanden aber ich würde das so lösen:
Java:
static ArrayList<File> fileSave = new ArrayList<File>();

Dann void main und der ganze GUI kram

Mit einer for Schleife in deine kleine GUI Liste(was auch immer du da benutzt) tun.
Und in dieser For schleife würde ich auch jedem neuen Object in der GUI-Liste(vieleicht ja ne Mini-menuBar) einen anonymen Listener hinzufügen, der dann deiner kopier Methode die File spezifische File übergibt!
 

Zurück
Oben