Jetzt kostenlos registrieren: Mitglieder surfen ohne Werbung!

Alle Dateien eines Ordners in ein Array schreiben

  • 20 Antworten
  • Neuester Beitrag
Diskutiere Alle Dateien eines Ordners in ein Array schreiben im Android App Entwicklung im Bereich Betriebssysteme & Apps.
H

Hans-Peter

Ambitioniertes Mitglied
Hallo zusammen,

Ich möchte die Dateinamen aller Dateien, die in einem Ordner (Der Name des Ordners ist in einem String gespeichert) auf der SD-Karte gespeichert sind in ein Array einlesen.
Das müsste eigentlich funktionieren, denn die Dateimanager machen es ja bestimmt ähnlich! :D


Der Sinn ist, dass der User dem Programm sehr viele Dateien übergeben muss. Dass er nicht bei allen einzeln den Speicherort eingeben muss dachte ich, er muss sie alle in einen Ordner stecken und das Programm findet sie dann automatisch.


Es müsste doch bestimmt eine Funktion geben wie directory.getFiles() oder so... (geht übrigens nicht)

Würde mich über gute Antworten sehr freuen!
Danke vorweg,

Hans-Peter
 
Fr4gg0r

Fr4gg0r

App-Anbieter (Werbung)
File deinRootDir = new File("/sdcard/");
ArrayList<String> files = new ArrayList<String>();
deinRootDir.listFiles(new FileFilter(){
public boolean accept(File f){
files.add(f.getAbsolutePath());
return false;
}}


Ansonsten kannste auch einfach deinRootDir.listFiles(); verwenden, dann bekommste aber eine Liste mit File Objekten zurück..
 
H

Hans-Peter

Ambitioniertes Mitglied
Danke für die Hilfe aber ich habs grad mal ausprobiert, eclipse hat Probleme mit files.add, er unterkringelt beide Wörter. Und er unterkringelt die letzte schließende Klammer.

Kann man das noch irgendwie ändern, dass es klappt, ich versteh die fehlermeldung nicht...

Danke für die Mühe
Hans-Peter
 
Zuletzt bearbeitet:
F

funcoder

Fortgeschrittenes Mitglied
Hast du auch das "File-Package" importiert?
Also folgendes oben in deiner JAva File hinzugefügt?
import java.io.File;

Wenn ja, was genau bekommst du für einen Fehler in Eclipse wenn du mit den Mauszeiger über das unterkringelte drüber gehst?
 
H

Hans-Peter

Ambitioniertes Mitglied
File deinRootDir = new File("/sdcard/");
ArrayList<String> files = new ArrayList<String>
();
deinRootDir.listFiles(new FileFilter(){
public boolean accept(File f){
files.add(f.getAbsolutePath();
return false;
}} );

Hat geklappt.

Ich bekomme nur das array nicht ausgelesen...
String test = files.get(0);
geht nicht, es stürzt immer ab...
 
Fr4gg0r

Fr4gg0r

App-Anbieter (Werbung)
Ja guck in den Log.. (show view, other, logcat)

Wenn das nicht klappt, ist deine Liste wohl leer :p
 
H

Hans-Peter

Ambitioniertes Mitglied
Liste leer?
Auf der sd-Karte??

Ich schau morgen mal im log.
Schon in eclipse, oder?
 
Fr4gg0r

Fr4gg0r

App-Anbieter (Werbung)
ja
 
F

funcoder

Fortgeschrittenes Mitglied
Du solltest vielleicht mal deine arraylist mit einem Iterator durchlaufen. Damit beugst du eine exception vor falls keine Datei vorhanden ist. Habe deinen Zugriff via der get Methode eh noch nie gesehen oder verwendet. ?
 
H

Hans-Peter

Ambitioniertes Mitglied
Fr4gg0r schrieb:
Ja guck in den Log.. (show view, other, logcat)

Wenn das nicht klappt, ist deine Liste wohl leer :p
Da steht nichts sinnvolles drin...
icon=4 oder so...


funcoder schrieb:
Habe deinen Zugriff via der get Methode eh noch nie gesehen oder verwendet. ?
Mit welcher Methode machst du es?


Danke für eure Hilfe
 
Zuletzt bearbeitet:
F

funcoder

Fortgeschrittenes Mitglied
Mit welcher Methode machst du es?
Mit einem Iterator :)

Iterator itr = files.iterator();
while(itr.hasNext())
System.out.println(itr.next());
}

Der Iterator durchläuft deine Arraylist solange bis keine weiteren Einträge vorhanden sind...

System.out.println musst du natürlich noch ersetzen...
 
H

Hans-Peter

Ambitioniertes Mitglied
Code:
itr.hasNext()
ist immer false...


Code:
Iterator itr = files.iterator();
[LEFT]while(itr.hasNext()){
Toast.makeText(this, (CharSequence) itr.next(), Toast.LENGTH_LONG).show();[/LEFT]
}
gibt also keine Meldung zurück!​





Code:
[SIZE=2]File Dir = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] File([SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"/sdcard/"[/COLOR][/SIZE][/COLOR][/SIZE]);[/SIZE]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]final[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ArrayList<string> files = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ArrayList<string>();[/SIZE][/LEFT]
[SIZE=2]Dir.listFiles([/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] FileFilter(){[/SIZE]
 
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]public [/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]boolean[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] accept(File f) {[/SIZE]

[SIZE=2]Object Path = f.getAbsolutePath();[/SIZE]
[LEFT][SIZE=2]files.add((string) Path);[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]return [/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]false[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2];[/SIZE][SIZE=2]}[/SIZE][SIZE=2]});[/SIZE][/LEFT]
[/LEFT]

Stimmt der Code dann auch??​
 
Zuletzt bearbeitet:
Fr4gg0r

Fr4gg0r

App-Anbieter (Werbung)
Hans-Peter schrieb:
Code:
[SIZE=2]File Dir = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] File(srcFolder);[/SIZE]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]final[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ArrayList<string> files = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ArrayList<string>();[/SIZE]
 
[LEFT][SIZE=2]Dir.listFiles([/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] FileFilter(){[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]public[/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]boolean[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] accept(File f) {[/SIZE]
[SIZE=2]Object Path = f.getAbsolutePath();[/SIZE]
[SIZE=2]files.add((string) Path);[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]return[/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]false[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2];[/SIZE][SIZE=2]}[/SIZE][SIZE=2]});[/SIZE][/LEFT]
[/LEFT]

Stimmt der Code dann auch??
Erstens muss das "String" und nicht string heißen.
Ansonsten sieht das richtig aus, auch wenn es nicht sinnvoll ist das Ergebnis von f.getAbsolutePath() (ein String) in ein Object zu packen und dieses dann wieder in einen String zu casten..
 
H

Hans-Peter

Ambitioniertes Mitglied
Ich hab jetzt:


Bundle bundle =
this.getIntent().getExtras();

String srcFolder=bundle.getString("src");




File Dir = new File(srcFolder);
final ArrayList<String> files = new ArrayList<String>();



Dir.listFiles(new FileFilter(){
publicboolean accept(File f) {
files.add((String) f.getAbsolutePath());
returnfalse;
}
});




Iterator itr = files.iterator();
while(itr.hasNext()){
Toast.makeText(this, (CharSequence) itr.next(), Toast.LENGTH_LONG).show();
}




geschrieben! auch das geht nicht...
 
Fr4gg0r

Fr4gg0r

App-Anbieter (Werbung)
Teste es doch mal mit srcFolder = "/sdcard/";
Dann wirst du sehen wo der Fehler liegt. ;)
 
H

Hans-Peter

Ambitioniertes Mitglied
Fr4gg0r schrieb:
Teste es doch mal mit srcFolder = "/sdcard/";
Dann wirst du sehen wo der Fehler liegt. ;)
passiert auch nichts...
 
F

funcoder

Fortgeschrittenes Mitglied
Was bekommst du für einen Fehler in der logcat Ausgabe?
Bzw. hast du mal testweise was er bei:
f.getAbsolutePath()
zurückbekommt in die Logausgabe geschrieben?
Versuch mal den Fehler weiter einzugrenzen...
 
H

Hans-Peter

Ambitioniertes Mitglied
if(files.isEmpty()){
Toast.makeText(this, "EMPTY" , Toast.LENGTH_LONG).show();
}

...habe ich nach dem Einlesen der Dateien geschrieben...
Er zeigt empty...

Stimmt dann die Methode zum einlesen nicht??
 
H

Hans-Peter

Ambitioniertes Mitglied
srcFolder= "/sdcard/";


File Dir = new File(srcFolder);
final ArrayList<String> files = new ArrayList<String>();​


Dir.listFiles(new FileFilter(){
public boolean accept(File f) {
files.add((String) f.getAbsolutePath());
Log.v("File", f.getAbsolutePath());
return false;
}});​


Er schreibt nichts ins Logcat...​
 
Fr4gg0r

Fr4gg0r

App-Anbieter (Werbung)
Vielleicht keine Sd Karte eingelegt? :laugh:
 
Ähnliche Themen - Alle Dateien eines Ordners in ein Array schreiben Antworten Datum
0
8
4