# Datenträger suche



## Ita (18. Feb 2004)

Gibt es eine Möglichkeit einen Code zu schreiben der dafür sorgt das alle Datenträger des verwendeten Pc's gefunden werden.

Falls möglich: soger die Verzeichnisse.




Falls jemand eine Idee für nen Quelltext hat würd mich diese Idee sehr interessieren.


----------



## JasonV (18. Feb 2004)

Hi!

Unter Umständen hilft die ein Blick in die Klasse JFileChooser bzw. FileSystemView... du könntest selbst eine solche Klasse bauen, nach dem Vorbild... musst dich ein bisschen durchkämpfen, aber das sollte gehen 

ich hoffe du weisst, wie du an die Declarations kommst


----------



## JasonV (18. Feb 2004)

ach, ich hab was einfacheres für die Datentrräger 


```
import java.io.*;

public class RootDir {
	public static void main(String[] args) {
		File afile[] = File.listRoots();
		for(int i = 0; i < afile.length; i++)
		{
			File file = afile[i];
			String abc = file.getAbsolutePath().toString();
			System.out.println(abc);
		}
	}
}
```


das klappt so, kannste testen


----------



## Beni (18. Feb 2004)

http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html#listRoots() zum Nachlesen :wink:


----------



## Guest (18. Feb 2004)

WoW klasse ich danke euch.

(Ich lieb das Forum schon jetzt :roll: )


----------



## JasonV (18. Feb 2004)

Anonymous hat gesagt.:
			
		

> WoW klasse ich danke euch.
> 
> (Ich lieb das Forum schon jetzt :roll: )




gern geschehen 
bin zwar auch absoluter neuling hier, aber mir gefällt das forum auch *g*


----------



## Ita (19. Feb 2004)

```
import java.io.*; 

public class RootDir { 
   public static void main(String[] args) { 
      File afile[] = File.listRoots(); 
      for(int i = 0; i < afile.length; i++) 
      { 
         File file = afile[i]; 
         String abc = file.getAbsolutePath().toString(); 
         System.out.println(abc); 
      } 
   } 
}
```




gefällt mir sehr.Habe vor ein Mp3 Such und Organisationsprogramm zu erstellen.So komm ich ziemlich gut vorran aber mit dem oberen Part hat ich ziemliche Probleme.Zudem hab ich noch nen Prob.Ich komm einfach nicht drauf wie ich das nun so schreiben kann das.
A)alle Datenträger angezeigt werden(erledigt)
B)selektionsmöglichkeiten für die Datenträger(nicht erledigt)
C)Ich zusätzliche Knotenpunkte habe um in die Unterverzeichnisse zu kommen(Jtree)


Hoffe ihr könnt mir in dem Fall noch mal helfen.Die Oberfläche und Deitenattribute auslesen hab ich bereits.

Eventuell bekomm ich die Punkte A-C in einem Quelltext.Würd mir ziemlich helfen.Nachfolziehen werd ichs auf jeden Fall können aber den Part zu schreiben hab ich ne Blockarde.


----------



## JasonV (19. Feb 2004)

zu B) das solltest du wohl in der GUI machen über Check-Buttons... lies die Roots aus, mach entsprechende Check-Buttons und speichere das dann in eine properties-datei oder so 


bei JTRee solltest du dann analog verfahren: alle verzeichnisse vom root aus rekursiv einlesen (kA wie ) und dann Knoten zur Laufzeit hinzufügen  - oder wie meintest du das?


----------



## Nobody (19. Feb 2004)

wenn du bestimmte dateitypen suchen sollst versuchs damit:
JFileChooser mit einem FileFilter.
solche themen das nächste mal bitte in den anfänger bereich, da häts besser gepasst.

bsp:

```
JFileChooser fc = new JFileChooser();  //FileChooser erstellen
    fc.setFileFilter( new javax.swing.filechooser.FileFilter() {   //Filter erstellen
      public boolean accept( File f ) {  //erlaubte Typen festlegen
        return (f.isDirectory() ||  //Ordner sind erlaubt
                f.getName().toLowerCase().endsWith(".gif") || //Dateien mit der Endung .gif sind erlaubt
                f.getName().toLowerCase().endsWith(".jpg")) ; //Dateien mit der Endung .jpg sind erlaubt
      }
      public String getDescription() {  //gibt die Beschreibung im Auswahlmenu zurück
        return "*.gif ; *.jpg";
      }
    } );
```

musst halt anpassen, den ich habs aus nem projekt rauskopiert


----------



## dona (24. Feb 2004)

Hi hab da mal was für dich.Schon  bissl länger her das ich mit Java Programmiert habe aber hab noch einiges aufm Rechner von mir.



```
import java.io.*;
public class RootDir
{
	private int anzahlMp3 = 0;
	
	public static void main(String[] args)
	{
		new RootDir();		
	}
	
	public RootDir()
	{
		File afile[] = File.listRoots();
		
		for(int i = 0; i < afile.length; i++)
		{
			File file = afile[i];
			System.out.println(file.getAbsolutePath());
		}
		
		addFilesToVector(afile);
		
		System.out.println(anzahlMp3 + " Mp3 Dateien gefunden!");
	}
	
	private void addFilesToVector(File fileArray[])
	{
		for (int i = 0; i < fileArray.length; i++)
		{
			try
			{
				if (fileArray[i].isDirectory())
				{
					addFilesToVector(fileArray[i].listFiles());
				}
				else
				{
					if(fileArray[i].getName().endsWith(".mp3"))
					{
						anzahlMp3++;
						System.out.println(fileArray[i].getName());
					}
				}
			}
			catch(Exception e)
			{}
		}
	}
}
```


So das müsst gehen.


----------



## Ita (25. Feb 2004)

So hab mal meine Suche bearbeitet.Lerne jeden Tag nun Java und so langsam bekomm ich richtig spass drann.

Meine Mp3 Suche sieht bis jetzt wie folgt aus


```
import java.io.*;
public class RootDir
{
	private int anzahlMp3 = 0;
	
	public static void main(String[] args)
	{
		new RootDir();		
	}
	
	public RootDir()
	{
		File afile[] = File.listRoots();
		
		for(int i = 0; i < afile.length; i++)
		{
			File file = afile[i];
			System.out.println(file.getAbsolutePath());
		}
		
		addFilesToVector(afile);
		
		System.out.println(anzahlMp3 + " Mp3 Dateien gefunden!");
	}
	
	private void addFilesToVector(File fileArray[])
	{
		for (int i = 0; i < fileArray.length; i++)
		{
			try
			{
				if (fileArray[i].isDirectory())
				{
					addFilesToVector(fileArray[i].listFiles());
				}
				else
				{
					if(fileArray[i].getName().endsWith(".mp3"))
					{
						anzahlMp3++;
						System.out.println(fileArray[i].getName());
        System.out.println(fileArray[I].getPath());
					}
				}
			}
			catch(Exception e)
			{}
		}
	}
}
```



Finde das klappt schon recht gut und wie gesagt ich entwickel Spass daran.Leider hab ich nun nen defftiges Problem.Habe noch 2Wochen Projekt inner Schule wo ich meine Suche spezifischer machen soll.Ich habe gehoft ich werde das hinbekommen aber dafür reicht mein Wissen und die Zeit nicht mehr aus.Mein Lehrer meinte gerade er wolle bis morgen noch nen weiteren vortschritt sehen.Das mit der Suche fand der schon Recht gut (Besonders wegen den Umständen hier.Ich war 2jahre in einer anderen Klasse bei einem anderen Lehrer.Wir haben 2jahre C gemacht(kein C++).Nach der Mittelstufe brachen viele die Ausbildungen aus meiner Klasse zum ITA ab.Dadurch wurden die paar Leute die bei uns in der Klasse waren(etwa noch 12 von 27) in die anderen 2Ita Klassen gesteckt.DIe scheisse dabei ist das wIr 2jahre C lernten und die lernten s 2jahre Java.Jetzt haben sie nen vorsprung von 2Jahren und nen paar von meiner alten Klasse und ich müssens aus Büchern lernen).Bis zur Abschlussprüfung sind jetzt noch nen paar Monate und mir ist bewusst das ich die anderen nicht einholen kann aber zumindest den Abstand verringern.Meine Projektgruppe besteht aus 3Leuten mit mir.Natürlich sinds Leute aus meiner alten Klasse da meine neue Klasse kein nerv hatte in ihren Gruppen nen schwächeres Mitglied haben.



Jetz ne Frage und ne bitte zugleich.Könnt einer meiner Suche so anpassen das es in verbindung mit dem Programm von Dona gebracht werden könnte?
Müsst man sich jetzt zu Donas Programm noch nen Button zum starten der Suche vorstellen.Meine Suche sollte so geschrieben sein das man im Jtree(im Baum von dona) ein Datenträger oder einen Unterordner  selektiert und durch das Drücken des (vorgestellten) Buttons das selektierte Objekt  nach Mp3 durchsucht wird.
(Die gefundenen Mp3' s    sollten ins rechte Fenster auf der Oberfläche angezeigt werden.Bin mir unschlüssig ob das in den Quelltext zur Oberfläche gehört,zur Suchfunktion oder eventeull zu beiden).

Eventuell ist das was für mich noch unmöglich ist,für einen von euch etwas leichtes und wird mir helfen bis Morgen.
Ist ziemlich wichtig und weiss auch nicht an wenn ich mich sonst wenden kann.Müsste auch nicht umsonst sein.

@Dona danke für die Oberfläche.ICh selbst kümmer mich nur um die Suchfunktion.Soll dir aber danke vom Klassenkamerad ausrichten denn ihm kam der Text sehr gut.Hat er bereits umgeändert damit alle Verzeichnisse angezeigt werden und hat dafür gesorgt das keine Dateien angezeigt werden.


----------



## Beni (25. Feb 2004)

Hm, hat Spass gemacht so ein kleines Programm zu schreiben:







Der Quellcode findet ihr hier:
http://n.ethz.ch/student/besigg/forum/FileTree.zip

Die Startklasse heisst _Main_, der Suchalorithmus ist in der Klasse _Searcher_, und der ganze Rest wird für die GUI verbraucht.

Ich hab nicht gerade viele Kommentare geschrieben (halte das meiste für selbsterklärend), aber wenn Fragen sind: einfach posten.

Kann sein, dass noch ein paar Bugs rumschwirren, aber niemand ist perfekt :wink:

mfg Beni


----------



## Ita (1. Mrz 2004)

Würden gerne noch die aller letzte Funktion haben was wir leider selbst nicht in das Programm einbinden können.Unzwar wollten wir gerne noch eine Funktion haben um die Mp3 Attribute auslesen können(id3-Tag).Eventuell so das, wenn man eine Mp3 selektiert und sich so ein neues Fenster öffnet in dem diese Mp3 Tags angezeigt werden.
Bitte das letzte mal um Hilfe.

P.s. SOS


----------



## Roar (1. Mrz 2004)

@Beni: wie lange hast n dafür gebraucht?


----------



## Roar (1. Mrz 2004)

@Beni: wie lang hastn dafür gebraucht?


----------



## Beni (1. Mrz 2004)

@Roar
Ein Stunde und noch ein paar zusätzliche Minütchen.


----------



## Roar (1. Mrz 2004)

achso...  :wink: 
is aber schnell.... oder hattest du den Tree schon? 
naja egal


----------



## Beni (1. Mrz 2004)

<offtopic>Jaaahrelange Übung, Zehnfingersystem nahe der Vollendung, die API auswendig... :-D, und vorallem alles schon mal in ähnlicher Form gemacht (aber nicht ein Byte mit Copy&Paste reingeschummelt, das will ich doch betonen 8) )</offtopic>


----------



## Ita (1. Mrz 2004)

Komm mir so ignoriert vor :cry:


----------



## Beni (1. Mrz 2004)

Das liegt daran, dass niemand eine Lösung kennt...

Ich hab keine Ahnung, wieweit Du im web rumgesucht hast, aber google "mp3 + tutorial + aufbau" führt schon weit.

http://www.substream.org/mp3-index.html
http://www.fh-jena.de/contrib/fb/et/personal/ansorg/mp3/mp3_2.htm


----------



## Ita (1. Mrz 2004)

Ah so.Ich selbst habe schon viel gegooglet und auch einiges gefunden.Das ist nur so schwer das in dein gemachtes Programm einzubinden


----------



## Roar (1. Mrz 2004)

@Beni:
puh ok  dann hab ich ja noch ein bissl zeit, da ich ja noch nicht soooo lange java programmiere.. hm naja  8) ...


----------

