Avatar billede tri Nybegynder
05. juni 2002 - 18:39 Der er 10 kommentarer og
1 løsning

Søge i en fil?

Jeg mangler en metode som kan søge efter ord i en fil.

når jeg så har fundet et bestemt ord i filen, så skal min søgning stoppe.


Avatar billede damnit Nybegynder
05. juni 2002 - 18:45 #1
Hmm...er ikk sikker på om du mener i en html fil, en db eller?? Hvis det bare er til dig selv, kan du trykke:

CTRL+B i nye browsere og CTRL+F i gamle...
Avatar billede tri Nybegynder
05. juni 2002 - 18:50 #2
jeg mener selvfølige i en tekstfil.
f.eks. HTML.

Jeg skal altså bruge et javaprogram som søger efter ord i en fil.
altså gennemløber den.
Avatar billede bearhugx Nybegynder
05. juni 2002 - 18:56 #3
Ok.. Og skal der kun returneres true/false (boolean) om ordet eksisterer i filen eller f.eks. hvilken linie ordet optræder på eller ????
Avatar billede tri Nybegynder
05. juni 2002 - 18:59 #4
bare true hvis ordet eksisterer.
Avatar billede bearhugx Nybegynder
05. juni 2002 - 19:03 #5
Ok ... Igang med at kode :-)
Avatar billede bearhugx Nybegynder
05. juni 2002 - 19:20 #6
Her er en klasse, med metode, som virker :-)

Den kan tilgåes via
  FileSearch.find( File, String );

Selve metoden er static, så der behøves ikke at instantiere et FileSearch objekt.

-----------------------------------

package com.skroeder.eksperten.FileSearch;
import java.io.*;

/**
* @version     1.0
* @author        Søren Munk Skrøder, skroeder.dk
*/
public class FileSearch {
    public static void main(String[] args) {
        new FileSearch();
    }
   
    public FileSearch()
    {
        File fil = new File("D:\\Dev\\Source\\eksperten\\220716-SearchInFile\\testdata.txt");
        String str = "what";
        System.out.println(" Found text '"+str+"' :: "+find(fil, str));   
    }
   
    public static boolean find(File fil, String searchString)
    {
        BufferedReader bufr;
        try
        {    bufr = new BufferedReader(new FileReader(fil));
        } catch (FileNotFoundException fnfEx)
        {    return false;
        }
       
        boolean found = false;
        String linie = "";
        boolean EOF = false;
        while (!EOF && !found)
        {
            try
            {    /* Forsøg at læse en linie */
                linie = bufr.readLine();
            } catch (Exception ex)
            {    /* Hvis der ikke kan læses linie, så returnér false */
                return false;               
            }
            if (linie == null)
            {    /* hvis der ikke findes noget på linien så afslut */
                EOF = true;
            } else
            {    // Linie er ok!
                found = (linie.indexOf(searchString)!=-1);
                /* hvis der på nuværende linie ikke findes søgestreng, så bare fortsæt med næste linie */
                /* ellers så afbrydes løkken og true returneres... :-) */
            }
        }
        return found;
    }
}

---------------------
  Min testfil (testdata.txt)

abc
data
boggie
hello
absolute
søren

/Søren Munk Skrøder
Avatar billede bearhugx Nybegynder
05. juni 2002 - 19:23 #7
dvs. at du roligt kan fjerne main-metoden, samt konstruktøren... De er kun med for at jeg hurtigt kunne afprøve ideen :-) -- De kan roligt slettes nu :-)
Avatar billede tri Nybegynder
05. juni 2002 - 19:27 #8
tester lige...
Avatar billede tri Nybegynder
05. juni 2002 - 19:42 #9
kanon. der virker som det skal.

Lige et andet fil spørgsmål:

Et det muligt i java (JDK 1.3.1) at sætte en lås på en fil når man læser den?
Altså så den først kan åbnes af andre programmer, når der er sluppet igen.


Man kan i jdk 1.4 http://javaalmanac.com/egs/java.nio/SetFileLock.html
men jeg skal bruge det i jdk 1.3.1

Kender du en måde?
Avatar billede bearhugx Nybegynder
05. juni 2002 - 20:38 #10
jeg tror ikke du kan :-/ ...

Nope ... Efter at have læst på
  http://www.onjava.com/pub/a/onjava/2002/03/06/topten.html?page=2
at FileLocking er en nyskabelse med JDK 1.4, så tror jeg ikke du kan ...

/Søren
Avatar billede tri Nybegynder
05. juni 2002 - 21:48 #11
ok. takker
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