24. marts 2003 - 16:19Der er
10 kommentarer og 2 løsninger
Find filer i et Directory
Jeg har brug for en metode som kan finde ALLE filer i et Directory. Den skal fungere rekursivt.
Jeg har lavet denne:
public String[] ListFiles(String dir) { Vector v = new Vector();
File [] filList; File f = new File(dir); filList = f.listFiles();
for (int i = 0; i < filList.length; i++) { if (filList[i].isDirectory()) { ListFiles(filList[i].toString()); } if (filList[i].isFile()) { v.add(filList[i].getAbsolutePath()); System.out.println(filList[i]); } }
v.trimToSize(); String [] res = new String[v.size()]; v.copyInto(res);
public class Dir { public static void main(String[] args) { // list all files in C:\ File dir = new File("C:\\"); String[] dirlist = dir.list(); for(int i = 0; i < dirlist.length; i++) { System.out.println(dirlist[i]); }
public class DirSub { public static void main(String[] args) { dir("C:\\java"); } public static void dir(String s) { File dir = new File(s); String[] dirlist = dir.list(); for (int i = 0; i < dirlist.length; i++) { String fnm = dir + System.getProperty("file.separator") + dirlist[i]; System.out.println(fnm); if ((new File(fnm)).isDirectory()) { dir(fnm); } } } }
public class DirSub2 { public static void main(String[] args) { Vector v = new Vector(); dir("C:\\java", v); for(int i = 0; i < v.size(); i++) { System.out.println((String)v.get(i)); } } public static void dir(String s, Vector v) { File dir = new File(s); String[] dirlist = dir.list(); for (int i = 0; i < dirlist.length; i++) { String fnm = dir + System.getProperty("file.separator") + dirlist[i]; v.add(fnm); if ((new File(fnm)).isDirectory()) { dir(fnm, v); } } } }
Jeg appender en / eller \ ind mellem parent dir og filnavn - System.getProperty("file.separator") gør at den samme kode virker på både Windows og Unix/Linux.
Bemærk, at min kode er lidt anderledes end dit approach, da jeg lister navne. Du lister filer og bruger så absolute path.
Jeg ved ikke hvad der er bedst. Jeg lavede det bare som jeg lige kunen finde ud af det.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.