mittels Java herausfinden, ob ein bestimmtes Laufwerk vorhanden ist

Gast #1260265
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
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
> 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
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
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
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...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.