09. oktober 2001 - 14:34Der er
28 kommentarer og 1 løsning
Analyse af fil-struktur
Hej gæve kodere! ;)
Jeg har brug for noget kode der kan læse og outputte filstrukturen fra en given path på serveren, f.eks /img/. Jeg skal kunne outputte en listing af den på en jsp side.. Bemærk den skal være rekursiv, og vise både filer og mapper.
Hey Disky ;) takker, det ser fint ud.. Hvordan ville du pakke det ind? i en servlet? eller direkte i jsp\'en? gider du evt. lave den til en servlet for mig? så kan jeg bedre fatte hvordan man konverter imellem disse? Det ville hjælpe mig en hel del.
Skal man undgå at blande directories og filer - altså prøve at få alle filer i samme katalog til at stå ved siden af hinanden - kan man bruge dette lille trick (bemærk: ingen rekursion). Det er dig ikke en bønne:
import java.io.*; import java.util.*;
public class DirectoryListing { public static void main(String arg[]) { LinkedList stak = new LinkedList(); File thisdir; stak.add(new File(\"C:/\"));
Ok, det var måske \"lidt\" upreciseret i mit oprindelige spørgsmål, men jeg skal bruge det til at outputte noget js-kode som opretter en node struktur magen til fil-strukturen, derfor er det vigtigt at vide precist hvordan filerne er placeret i de respektive mapper.. ;)
Nå, ok, det er nu første gang jeg laver det nummer i Java. En \"system volume information\" fil bliver opfattet som et katalog, men en null-pointerfejl til følge. Det er kun et problem hvis man starter i roden af en disk, og sikkert kun under Windows. Men dette er altså et lille nummer mere stabilt:
import java.io.*; import java.util.*;
public class DirectoryListing { public static void main(String arg[]) { LinkedList stak = new LinkedList(); File thisdir; stak.add(new File(\"C:/\"));
while (stak.size()>0) { thisdir=(File)stak.removeLast(); System.out.println(\"Directory: \"+thisdir.getAbsolutePath()); File files[]=thisdir.listFiles(); if (files!=null) { for (int x=0; x<files.length; x++) { if(files[x].isDirectory()) { stak.add(files[x]); } else if (files[x].isFile()) { System.out.println(\" \"+files[x].getName()); } } } } } }
Disky: Jeg sidder med dit eksempel, men har lidt problemer, da man ikke umiddelbart kan tjekke om det er en parent mappe, eller en ny mappe i længere nede i strukturen..
problemet er f.eks at Mappe 2 skal have parent=0, men den får parent=2, da den ikke ved at den tilhører root (0)...
Det burde kunne løses ved lave beanen om så man fra jsp\'en kunne lave en mappe løkke med en fil løkke indeni ;) istedet for som nu, hvor det er en løkke...
ok ;) - Du behøver ikke at haste, men det ville være en god bønne at have ;) - jeg sidder med noget af et hack af Diskys bean/jsp, og det virker tilsyneladene, jeg bruger rest-pathen som id, og får dermed parent kontrol:
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.