06. november 2002 - 16:03Der er
6 kommentarer og 1 løsning
Søge en fil struktur igennem
Jeg har en stor fil struktur med java filer, jeg fil gerne søge i alle java filer efter noget bestemt kode. Hvordan løber man sådan en struktur igennem på en god måde. Det skal være et eller andet med at for hver fil der finder laves en stream der læser i filen
Vil du selv kode noget i Java til at søge i dine Java filer - eller har du bare brug for at søge i nogle Java filer ?
Det første er en næsten klassisk programmerings-opgave.
Det sidste kræver bare det rigtige tool. De fleste IDE'er supporterer søgning i flere filer. Men jeg vil anbefale SourceNavigator til det. Fremragende søge og navigations-muligheder.
Her er en løsning jeg lige hurtigt har stykket sammen til dig. Det skal lige siges, at det kan gøres smartere, hurtigere osv... Denne kode gør ikke brug af det oplagte, nemlig rekursion, men det er vel også mere pricippet i filsøgning du søger efter? Denne kode kan søge et helt bibliotek igennem, pt. hardcodet til C:\java\txt...
Håber det hjalp :O)
/SWAQ
import java.io.*; import java.util.*;
public class FileSearch{
public FileSearch(String searchFor){
try{ File dir = new File("C:\\java\\txt"); File[] filer = dir.listFiles(); int localCount=0; boolean found = false; String result = searchFor+" findes i foelgende filer\n"; StringTokenizer st = null; BufferedReader input = null; StringBuffer sb = new StringBuffer(); for(int i = 0; i<filer.length ; i++){ input = new BufferedReader(new FileReader(filer[i])); while(input.readLine()!=null){ try{ st = new StringTokenizer(input.readLine()," ()\"\"\\;.,{}"); while(st.hasMoreTokens()){ String temp = st.nextToken(); if(searchFor.equals(temp)){ localCount++; found=true; } } } catch(NullPointerException nep){ //nep.printStackTrace(); } } if(found==true){ sb.append(filer[i].toString()+"\t"+localCount+" gang(e)\n"); localCount=0; found=false; } } result += sb.toString(); System.out.println(result); } catch(Exception e){ e.printStackTrace(); } } public static void main(String[]args){ new FileSearch("main"); } }
Jeg vil selv kode det i java, og jeg kan godt se at det er noget ala det swaq har skrevet, men det skal bare være rekursivt. Jeg har bare ikke lige helt styr på at lave rekursive metoder
Det er som jeg skrev blot at du laver en funtion som kan finde alle mapper og filer til en given sti. Og så for hver mappe du støder på kalder den så blot sig selvv med den nye mappe tilføjet til stien som den skal søge.
poull : kan du ikke lige lave et svar, så jeg kan give nogle point !!!! Jeg har lavet en løsning der kalder rekursivt, jeg troede bare først at når den fandt den første mappe ville den ikke lede videre i de efterfølgende filer og mapper..
Jeg kan ikek så godt programmere jave =) Kender bare problemet i andre sprog så jeg kan ikek skrive koden lige men jeg kan måske godt itlrette noget kode. Så du må nokj håbe at en af de andre kan kode det for dig. Jeg gav blot ldit starthjælp :)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.