Pfad aus Dateilesen -> wie diesen Pfad verwenden!

  • Themenstarter Themenstarter Tomate_Salat
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

Tomate_Salat

Gast
Hi,

Ich bin gerade dabei ein kleines Tool zu schreiben. Für das Tool gibt der Benutzer einen Pfad zu einem Ordner an, welcher Dateien enthält, dass das Tool administrieren soll. Dazu verwende ich einen JTree. Den Pfad zum Ordner wird in der config.txt gespeichert. Wenn ich jetzt mit FileReader die Datei auslese, erkennt File() diesen Pfad nicht 😵. Gebe ich den, in config.txt, enthaltenen Pfad manuell ein (also in den Programmcode in File()) Funktioniert es und der JTree läd die Ordner die in dem Pfad enthalten sind.

Also: wie kann ich den Pfad aus der config nehmen?

Hier der Code, wie ich die config.txt auslese [als Testeintrag steht in der Config: C:\ drin]

Code:
try {
                String vz = "";
                Reader fread = new FileReader("config.txt");
                for(int c=0;(c = fread.read()) != -1;) {
                    vz += (char)c;
                }
                File dir = new File(vz);
                getTree(dir,root);
 } catch(Exception e) {}

MFG
Tomate_Salat
 
Anonymous hat gesagt.:
[...]
Code:
for(int c=0;(c = fread.read()) != -1;) {
[...]
Du liest alle Zeichen mit. Ich mutmaße: Inklusive dem Zeilenumbruch am Ende.

Wie wäre es, die Konfig-Datei zeilenweise zu lesen?
Code:
String fname = null;
try {
  // read the first line in config file, only
  final BufferedReader in = new BufferedReader(new FileReader("config.txt"));
  fname = in.readLine();
  in.close();
} catch(IOException e) {
  ex.printStackTrace();
}

if (fname != null) {
  final File dir = new File(fname); 
  // Falls hier auch Exceptions gefangen werden sollen: Neues try-catch-Konstrukt nutzen,
  // um den Ort des Fehlers besser abgrenzen zu können.
  getTree(dir,root);
}
(Code im Browser getippt. Kann also kleine Fehler haben)

Ebenius

PS: Fehlermeldungen bei Exceptions möglichst ausgeben (kein leerer catch-Block). Gefangene Exception-Typen möglichst sinvoll genau (Hier also IOException statt Exception) fangen. try-Blöcke möglichst klein halten. Ströme (und Reader) nach Verwendung schließen.
 
ok, werde es gleich mal testen 🙂.
Die Ströme schliese ich alle (nur in dem Fall vergessen weil ich verzweifelt war) 😛
 
Ok, das Problem wäre weg, jz hab ich ein neues 🙁, ich mache jz keinen neuen Thread auf, weils ja doch iwie hier reinpasst:

Die Daten sollen ja in einem JTree verwendet werden. Wenn ich jetzt aber die Config ändere(was über das Tool geschiet), wie kann ich dann erreichen, dass der Tree nur noch die Ordern und Dateien, des Pfades in der Config anzeigt. Sprich: Wie aktuallisiere ich das? Habe es mit Listener versucht aber nicht den richtigen gefunden. Habe schon ein Tutorial hier gefunden, doch das hilft mir auch nicht wirklich weiter

MFG
Tomate_Salat
 
Das kann ich pauschal nicht beantworten... Daten im JTree setzt man über das entsprechende Modell (JTree.getModel()), aber das weißt Du bestimmt. Listener? Wem möchtest Du denn in welchem Fall zuhören? Vielleicht die Frage noch mal genauer/anders stellen oder ein bisschen Source-Code dazu, oder ...
 
Hmm, Source-Code ist schwer, da das ganze auf Methoden verteilt ist. Ich versuche es genauer zu erklären:

In der Config ist ein Pfad gegeben zu einem Ordner
(z.B.: C:\Programme)
Beim starten des Programms, wird die Config ausgelesen und der JTree zeigt die Ordner usw. von diesem Pfad an.
Das Programm hat einen Button "Einstellungen". Klickt man diesen an, öffnet sich ein Dialog in dem man einen neuen Pfad eingeben kann. Das Programm schreibt diesen Ordner in die Config(sofern es diesen Ordner gibt!). War der Vorgang erfolgreich, erscheint ein 2ter Dialog, der den Benutzer darüber informiert. Klickt man dort auf den Ok button schließen beide Dialog-Fenster und der JTree soll das neue Verzeichnis annehmen.
 
Dann solltest Du an dieser Stelle Dein TreeModel neu befüllen. Wem wolltest Du denn mit Listener zuhören?
 
Das ist auch der Plan. Zuhören wollte ich dem Button, wenn man den anklickt soll sich der Baum neu laden / befüllen.
 
Du hast doch einen modalen Dialog, oder?
Code:
myModalDialog.setVisible(true);
// get result here
// store the config file
// update the tree model
Ist das nicht praktikabel?

Ebenius
 
Anonymous hat gesagt.:
Mein Problem: ich weis nicht wie ich den JTree aktualisiere
Suchst Du sowas (zum Beispiel)?
Code:
// Ich mutmaße, dass Du DefaultTreeModel verwendest!
final DefaultTreeModel tm = tree.getModel();
final DefaultMutableTreeNode myNewRoot = <---- hier den Baum neu aufbauen
tm.setRoot(myNewRoot);
Ansonsten hab ich Dein Problem immer noch nicht greifen können...
 
🙂 OMG ES FUNKTIONIERT!!! ENDLICH 🙂 danke. Du weist garnicht wie sehr du mir geholfen hast 🙂
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben