Avatar billede kristianp Nybegynder
06. november 2002 - 16:03 Der 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
Avatar billede poull Nybegynder
06. november 2002 - 16:11 #1
Princippet er at du laver en funktion som er rekusiv, dvs at for hver mappe den finder så kalder den sig selv med den nye mappe som parameter.
Avatar billede arne_v Ekspert
06. november 2002 - 16:16 #2
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.
Avatar billede swaq Nybegynder
06. november 2002 - 16:52 #3
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");
    }
}
Avatar billede kristianp Nybegynder
06. november 2002 - 18:22 #4
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
Avatar billede poull Nybegynder
06. november 2002 - 18:43 #5
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.
Avatar billede kristianp Nybegynder
06. november 2002 - 22:06 #6
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..
Avatar billede poull Nybegynder
08. november 2002 - 19:33 #7
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 :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester