mikrocontroller.net

Forum: PC-Programmierung mittels Java herausfinden, ob ein bestimmtes Laufwerk vorhanden ist


Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so könnte das hinhauen
try{
new File("Pfad").open();
}
catch(irgendeine Exception){
mach was dagegen
}

Autor: der mechatroniker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gast schrieb:
> so könnte das hinhauen
>
> try{
> new File("Pfad").open();
> }
> catch(irgendeine Exception){
> mach was dagegen
> }
> 
Jav bietet die Methoden: exits(), canRead(), canWrite() um das ganze 
ohne den Versuch des vorherigen öffnens zu bewerkstelligen.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...)

Autor: *.* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> canRead(), canWrite()

Die sind nicht sonderlich viel wert...

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

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)
public static void main(String[] args) throws Exception {
    File f = new File("Existiert Nicht");
    testFile(f);
    f = new File("schreibgeschuetzt.txt");
    testFile(f);
    f = new File("//UNI-514965/daten/keinzugriff.netzwerk.txt");
    testFile(f);
}

private static void testFile(File f) {
    System.out.println("["+f+"]");
    System.out.println("\tExists\t"+f.exists());
    System.out.println("\tWrite\t"+f.canWrite());
    System.out.println("\tRead\t"+f.canRead());
}
Ergebnis
[Existiert Nicht]
        Exists  false
        Write   false
        Read    false
[schreibgeschuetzt.txt]
        Exists  true
        Write   false
        Read    true
[\\UNI-514965\daten\keinzugriff.netzwerk.txt]
        Exists  true
        Write   true
        Read    true

Autor: Daniel F. (df311)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läubi .. schrieb:
> gast schrieb:
>> so könnte das hinhauen
>>
>> try{
>> new File("Pfad").open();
>> }
>> catch(irgendeine Exception){
>> mach was dagegen
>> }
>> 
> 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.