mittels Java herausfinden, ob ein bestimmtes Laufwerk vorhanden ist

Gast #1260265
Lesenswert?

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
Gast #1260907
Lesenswert?

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.
Gast #1261222
Lesenswert?

> 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.
Gast #1261242
Lesenswert?

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 #1261707
Lesenswert?

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...)
Persönliche Seite #1262030
Lesenswert?

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
#1262122
Lesenswert?

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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren