Avatar billede dl Nybegynder
06. juni 2006 - 17:39 Der er 11 kommentarer og
1 løsning

gemmensøgnin af filer på Alle Drev (FileSeach)

Jeg skal bruge noget kode / eksempel er bedre :p
på noget kode, som kan søge alle ens filer igemmen på harddisk.

jeg har set lidt på java.io ... og der er da også en masse med isFile ... men ikke rigtig noget som jeg lige mener at kunne bruge.

// DL
Avatar billede arne_v Ekspert
06. juni 2006 - 17:41 #1
foelgende kode leder efter et bestemt filnavn under et bestemt dir (kan vaere
root dir):

import java.io.*;
import java.util.*;

public class Find {
  public static void main(String[] args) {
      ArrayList lst = new ArrayList();
      find("C:\\Code", "build.xml", lst);
      for(int i = 0; i < lst.size(); i++) {
          System.out.println(lst.get(i));
      }
  }
  public static void find(String s, String target, List retvals) {
      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];
        if(dirlist[i].equals(target)) {
            retvals.add(fnm);
        }
        if ((new File(fnm)).isDirectory()) {
            find(fnm, target, retvals);
        }
      }
  }
}
Avatar billede dl Nybegynder
06. juni 2006 - 17:48 #2
gør den det samme som, hvis jeg skriver :  dir *.*  fx
Avatar billede arne_v Ekspert
06. juni 2006 - 17:55 #3
find("C:\\Code", "build.xml", lst);

laver

DIR C:\Code\build.xml /S
Avatar billede arne_v Ekspert
06. juni 2006 - 17:56 #4
men du kan nemt rette koden til saa den laver

DIR C:\*.* /S
Avatar billede dl Nybegynder
06. juni 2006 - 19:08 #5
ja, det virker .. tro jeg :|  har en af de dage hvor intet til virke.

hvorfor får jeg en Exception-null pointer:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at filmkartotek.gui.FileHandler.find(FileHandler.java:17)
    at filmkartotek.gui.FileHandler.find(FileHandler.java:23)
    at filmkartotek.gui.MainFrame1.jButton1_actionPerformed(MainFrame1.java:47)
...



dette får jeg hvilken skifter  "C:\\"  ud med  "J:\\"
begge harddisk.
Avatar billede dl Nybegynder
06. juni 2006 - 19:11 #6
arne_v  >>  det ville være alt vær ... hvis du ville sætte bare lidt kommentar på.
fx her  System.getProperty("file.separator")

og så kom lige med et svar ... du har dog svaret på indlæget.
Avatar billede arne_v Ekspert
06. juni 2006 - 19:57 #7
System.getProperty("file.separator") returnerer \ paa Windows  og / paa
Unix/Linux

paa den maade er selve find funktionen ogsaa platform uafhaengig
Avatar billede arne_v Ekspert
06. juni 2006 - 19:57 #8
og svar
Avatar billede arne_v Ekspert
06. juni 2006 - 19:58 #9
public static void find(String s, String target, List retvals) {
      File dir = new File(s);
      String[] dirlist = dir.list(); // find alt i dir
      for (int i = 0; i < dirlist.length; i++) {
        String fnm = dir + System.getProperty("file.separator") + dirlist[i]; // konstruer ny filnavn
        if(dirlist[i].equals(target)) { // hvis det matcher saa gem i resultat ArrayList
            retvals.add(fnm);
        }
        if ((new File(fnm)).isDirectory()) { // hvis directory saa kald rekursivt
            find(fnm, target, retvals);
        }
      }
  }
Avatar billede dl Nybegynder
06. juni 2006 - 19:58 #10
takket meget.

jeg kan jo så se , at jeg kikkede det rigtig sted hen.. med java.io  :D
Avatar billede arne_v Ekspert
06. juni 2006 - 20:00 #11
proev med:

  public static void find(String s, String target, List retvals) {
      File dir = new File(s);
      String[] dirlist = dir.list();
      if(dirlist != null) {
      for (int i = 0; i < dirlist.length; i++) {
        String fnm = dir + System.getProperty("file.separator") + dirlist[i];
        if(dirlist[i].equals(target)) {
            retvals.add(fnm);
        }
        if ((new File(fnm)).isDirectory()) {
            find(fnm, target, retvals);
        }
      }
    }
  }
Avatar billede arne_v Ekspert
06. juni 2006 - 20:01 #12
dir.list returnerer null i visse fejl situationer

jeg forstaar ikke helt hvorfor du skulle faa en saadan, men ...
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