Hallo, kann man irgendwie herausfinden, ob man unter Windows mit einem bestimmten Netzlaufwerk verbunden ist. Entweder Laufwerk z.B. S: oder eben \\server\konto\ Kann man sowas mit Java abfragen? Hintergrund: Daten sollen kontiunierlich auf eine bestimmtes Verzeichnis gespeichert werden. Gruß Holger
google: java api File -->File.listRoots(); Geht aber nicht für Netzlaufwerke, sondern nur für Laufwerksbuchstaben soweit ich weiß, also im Zweifel als Netzlaufwerk einbinden.
Hallo, danke für den Tipp. Unter windows kann ich mir so auf jeden Fall das Konto anzeigen lassen und das dann abbrüfen. Holger
warum schreibst du dann nicht immer auf \\server\konto\ - wenn die daten eh dort hin sollen? Wenn es ein Fehler gibt dann ist der Server nicht erreichbar - dann kannst du eh nichts machen, die Daten sollen ja dort hin.
so könnte das hinhauen
1 | try{ |
2 | new File("Pfad").open(); |
3 | }
|
4 | catch(irgendeine Exception){ |
5 | mach was dagegen |
6 | }
|
> Wenn es ein Fehler gibt dann ist der Server nicht > erreichbar - dann kannst du eh nichts machen, die Daten sollen ja dort > hin. Nichts machen stimmt nicht ganz. Wenn z.B. der Benutzer, unter dessen Konto das Programm läuft, auf \\server\freigabe nicht zugreifen darf, gehts ohne Netzlaufwerk schief. Wenn aber der Benutzer dasselbe Verzeichnis als Netzlaufwerk öffnet (und sich dabei mit einem anderen Usernamen und PW ausweisen kann) gehts nachher.
wenn soetwas wie unter "anderem namen verbinden gemacht werden muss", dann sollte man eventuell mal den Admin bescheidsagen das da was nicht stimmt - so etwa sollte in einem Administrierten netzt nicht auftreten. Entweder hat der Benutzer zugriff auf dem Rechner oder nicht.
gast schrieb: > so könnte das hinhauen >
1 | > try{ |
2 | > new File("Pfad").open(); |
3 | > } |
4 | > catch(irgendeine Exception){ |
5 | > mach was dagegen |
6 | > } |
7 | >
|
Jav bietet die Methoden: exits(), canRead(), canWrite() um das ganze ohne den Versuch des vorherigen öffnens zu bewerkstelligen.
Und statt \\Server\Freigabe\ muss man ganz ergonomisch unter Windows entweder '\\\\Server\\Freigabe\\' schreiben oder den plattformabhängigen Pfadtrenner benutzen, der irgendwo in den Java-Abgründen vergraben ist. (Das war ernst gemeint, irgendwo in irgendeiner Klasse gibts da eine Konstante für die aktuelle Plattform...)
> canRead(), canWrite()
Die sind nicht sonderlich viel wert...
Sven P. schrieb: > Und statt \\Server\Freigabe\ muss man ganz ergonomisch unter Windows > entweder '\\\\Server\\Freigabe\\' schreiben oder den plattformabhängigen > Pfadtrenner benutzen, der irgendwo in den Java-Abgründen vergraben ist. > (Das war ernst gemeint, irgendwo in irgendeiner Klasse gibts da eine > Konstante für die aktuelle Plattform...) Also wir hatten doch schonmal diskutiert das Windows sowohl '/' als auch '\' aktzeptiert, und besagtes Symbol ist in gar keinen Abgründen vergraben sondern befindet sich (wer hätte es vermutet) in der Klasse File als public Konstante namens 'seperator' ... also "vollständig" zugreifbar mittels File.seperator http://java.sun.com/j2se/1.3/docs/api/java/io/File.html#separator Wie kommt es eigentlich das du in jedem Thread deinen Unmut über Windows(pfadtrenner) äußern mußt? Ist meiner Meinung nach nicht zielführend aber ist natürlich deine Sache. @*.* Eine sehr fundierte Antwort danke für diesen Beitrag! Also ein grober Anhaltspunkt ist das schon, nur übers Netzwerk scheint es bei Win98 nicht zu funktionieren (unter XP/Vista mag das anders sein). Das einzige Ärgernis ist das man damit nicht festellen kann wenn ein Programm wie Acrobat einen Lock auf der Datei hält. Dafür sind diese Funktionen aber auch nicht konzipiert, sondern geben auskunft ob du prinzipiell die Berechtigung hast (appletts dürfen z.B. nicht ohne weiteres auf das lokale Dateisystem zugreifen) ob dies dann im weiteren Verlauf auch wirklich klappt wird nicht garantiert (die Datei könnte zwischen den Zugriffen ja auch gelöscht/umbenannt/rechte geändert worden sein)
1 | public static void main(String[] args) throws Exception { |
2 | File f = new File("Existiert Nicht"); |
3 | testFile(f); |
4 | f = new File("schreibgeschuetzt.txt"); |
5 | testFile(f); |
6 | f = new File("//UNI-514965/daten/keinzugriff.netzwerk.txt"); |
7 | testFile(f); |
8 | }
|
9 | |
10 | private static void testFile(File f) { |
11 | System.out.println("["+f+"]"); |
12 | System.out.println("\tExists\t"+f.exists()); |
13 | System.out.println("\tWrite\t"+f.canWrite()); |
14 | System.out.println("\tRead\t"+f.canRead()); |
15 | }
|
Ergebnis
1 | [Existiert Nicht] |
2 | Exists false |
3 | Write false |
4 | Read false |
5 | [schreibgeschuetzt.txt] |
6 | Exists true |
7 | Write false |
8 | Read true |
9 | [\\UNI-514965\daten\keinzugriff.netzwerk.txt] |
10 | Exists true |
11 | Write true |
12 | Read true |
Läubi .. schrieb: > gast schrieb: >> so könnte das hinhauen >>
1 | >> try{ |
2 | >> new File("Pfad").open(); |
3 | >> } |
4 | >> catch(irgendeine Exception){ |
5 | >> mach was dagegen |
6 | >> } |
7 | >>
|
> Jav bietet die Methoden: exits(), canRead(), canWrite() um das ganze > ohne den Versuch des vorherigen öffnens zu bewerkstelligen. naja, wenn daten kontinuierlich in das verzeichnis gespeichert werden sollen und explizit nach einer java-lösung gefragt wird, würde ich zumindest vermuten, dass die daten vom java-programm gespeicehrt werden sollen. und in einem solchen fall würde man mit open zwei fliegen mit einer klappe schlagen. wenn das java-programm aber nur prüfen sollte, ob das netzlaufwerk da ist, ist java zu 99% die falsche sprache...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.