# suchprogramm schreiben



## Fredo (11. Dez 2007)

Hey Leute

ich will ein programm schreiben,das meinen pc nach dateien durchsuchen kann.
das ganze nach eingabe des dateinamens in konsole durch den benutzer(also keine grafische oberfläche).

kann mir einer nen kleinen anstoß geben ich hab nämlich nicht wirklich ne Idee.

Danke Mfg Fredo


----------



## function (11. Dez 2007)

ich will ja jetzt nicht meckern, aber warum wollen leute ständig das rad neu erfinden? es gibt eigentlich für jede plattform befehle um dateien zu suchen...


----------



## Fredo (11. Dez 2007)

Das stimmt ich mach das auch nur so aus intersse am programmieren.
Ich finds einfach cool sowas mal selbst gemacht zu haben.

MfG Fredo


----------



## Gelöschtes Mitglied 5909 (11. Dez 2007)

http://lucene.apache.org/


----------



## SlaterB (11. Dez 2007)

> Ich finds einfach cool sowas mal selbst gemacht zu haben. 

+ 

> [Hey erzählt mir mal wie das geht]

 

----------


jede Festplatte einzeln,
File vom Grundverzeichnis erstellen, mit listFiles() Dateien und Unterverzeichnissen erhalten,
Dateien vergleichen, evtl. Unterverzeichnisnamen vergleichen + rekursiv für jedes Unterverzeichnis das gleiche


----------



## Fredo (11. Dez 2007)

Ich will ja keine fertige Lösung.Nur nen Ansatz^^

Aber DAnke


----------



## MASTERmind (12. Dez 2007)

habe sowas mal gemacht, um alle JSPs zu finden.....

```
public void getFiles(File path)
  {
    File[] files = path.listFiles(new FilenameFilter()
    {
      public boolean accept(File dir, String name)
      {
        if (name.endsWith(".jsp"))
        {
          return true;
        }
        if (dir.exists() && name.charAt(0) != '.')
        {
          return true;
        }
        return false;
      }
    });
    if (files != null)
    {
      for (File element : files)
      {
        // mal eben ause dem FileObjekt ein String machen
        temp = element.toString();
        if (element.toString().endsWith(".jsp"))
        {
          fileList.add(temp);
        }
        if (element.isDirectory())
        {
          getFiles(element);
        }
      }
    }
  }
```


----------



## Guest (12. Dez 2007)

yo das find ich gut  :applaus: 

wie kann ich denn das "endsWith" zu einem "stecktdrin" ändern??

MfG Fredo


----------



## SlaterB (12. Dez 2007)

.contains()


----------



## The_S (13. Dez 2007)

Womit wir uns langsam doch dem "alles vorgekaut" nähern ... :roll: .


----------



## ARadauer (13. Dez 2007)

sehr hilfreiche lektüre wenn man infos zu methoden von objekten braucht:
http://java.sun.com/javase/6/docs/api/


----------



## MASTERmind (13. Dez 2007)

SlaterB hat gesagt.:
			
		

> .contains()



contains() prüft allerdings auf == wenn mich nicht alles täuscht!?
will man wissen. ob da ein String drin steht muss man .equals() nehmen.

So ist es zumindest mir ergangen....ich guck da aber mal eben rein in contains().


----------



## SlaterB (13. Dez 2007)

welch ein dämliches Posting ,  der Kraftausdruck sei erlaubt


----------



## MASTERmind (13. Dez 2007)

wieso???


----------



## SlaterB (13. Dez 2007)

> contains() prüft allerdings auf == 

falsch

> will man wissen. ob da ein String drin steht muss man .equals() nehmen

falsch und geradezu kategorisch falsch,
'drinstecken' == contains(), das gibt doch schon die deutsch/ englische Übersetzung her,
equals ist offensichtlich irgendwas mit Gleichheit, nicht mit Enthaltensein,

dazu das allgemeine Problem des String-Vergleichs(== vs equals) hier reingemischt,
obwohl es doch schlicht um contains() geht, bei dem man sowas eh nicht falsch machen kann,

in mehreren Dimensionen durchmischt überall komplett falsch,
gar nicht so leicht, das so zu kombinieren


----------



## MASTERmind (13. Dez 2007)

Vorab: ICh bewundere sehr, dass euch das allen immer sowas von klar ist was da passiert, wenn ihr Methoden nutzt.
Mir ist das nicht immer klar, leider! 

Dann geb ich Dir mal ein konkretes Beispiel, bei dem man sich den Unterschied erst mal klar macht.

```
public boolean hasRight(String requiredRight)
  {
    for(String temp : userRights)
    {
      if(temp.equalsIgnoreCase(requiredRight))
      {
        return true;
      }
    }
    return false;
    //return userRights.contains(requiredRight);
  }
```

Hier muss man sich aus den von Dir beschriebenen Gründen erst mal klar machen, dass das mit == in der if-Abfrage nicht funktioniert.

Ich kann gut damit leben, dass meine Postings ab und zu als dämlich bezeichnet werden, aber ich lerne immer was dabei und mir wird einiges klarer.

Also SlaterB solange Du mir sagst warum mein Posting dämlich ist, kannst Du das gerne raus lassen, was Du so an Frust in Dir trägst 

Edit: Ich meine für == in der if-Abfrage sowas wie

```
if(temp.contains(requiredRight))
```


----------



## SlaterB (13. Dez 2007)

der Unterschied zwischen == und equals ist klar und eine wichtige Sache,
nur hatte das hier mit dem Thema nichts zu tun,

== sowie equals haben mit contains nichts zu tun, auch wenn natürlich für identische Strings gilt:
a.equals(b) == true und a.contains(b) == true sowie b.contains(a) == true


----------



## MASTERmind (13. Dez 2007)

Ok...dann erklär mir doch bitte mal folgendes aus der JAVA API


> public boolean contains(Object o)
> 
> Returns true if this collection contains the specified element. More formally, returns true if and only if this collection contains at least one element e such that (o==null ? e==null : o.equals(e)).
> 
> ...


vor allem die Zeile:


> contains at least one element e such that (o==null ? e==null : o.equals(e)).


Was will mir das sagen?

Sorry wenns am Topic vorbei is...


----------



## SlaterB (13. Dez 2007)

oh, wenn du von List.contains() spricht, dann macht deine Aussage in ihrer Gesamtheit wieder Sinn,
da entschuldige ich mich,


es ging allerdings die ganze Zeit um String.contains(),
um die Frage, ob ein String Teil eines anderen ist,

enthält Dateiname HelloWorld.java den Teilstring "World"?


----------



## MASTERmind (13. Dez 2007)

joa ich sprach von List.contains() also auf ObjektEbene....was ich so in die Liste reinstopfe...


----------



## The_S (13. Dez 2007)

MASTERmind hat gesagt.:
			
		

> joa ich sprach von List.contains() also auf ObjektEbene....was ich so in die Liste reinstopfe...



Darum gings aber überhaupt gar nicht :bahnhof: ...


----------



## MASTERmind (13. Dez 2007)

da habt ihr recht...könnt ihr mir das vllt. trotzdem nochmal erklären bzgl. der API?


----------



## The_S (13. Dez 2007)

Was ist denn jetzt noch unklar?


----------



## SlaterB (13. Dez 2007)

contains(o) ist true 
wenn o null ist und ein e == null in der Liste ist
oder o nicht null ist und ein e mit e.equals(o) == true in der Liste ist


----------



## Marco13 (13. Dez 2007)

*klugscheiß* Wobei "if and only if" so viel bedeutet wie "_genau_ dann, wenn..."  :meld:


----------

