Zugriffsverweigerung nach Dateitransfer

Status
Nicht offen für weitere Antworten.

TypusMensch

Mitglied
Hallo, kurz gefasst:

Code:
public foo(String server, int port, String sourcefilename) throws UnknownHostException, IOException {
        client = new Socket(server, port);
        InputStream is = client.getInputStream();
        OutputStream os = client.getOutputStream();
        //SEND --Pseudo
        sendeAnforderung();
        //RECEIVE --Pseudo
        erhalteDatei();
        //CLOSE
        is.close();
        os.close();
        client.close();
        //OPEN
        if (Desktop.isDesktopSupported()) {
            if (file.exists() && file.canExecute()) {
                Desktop desk = Desktop.getDesktop();
                desk.open(file);
            }
        }
    }

Soweit, so gut. sendeAnforderung() und erhalteDaten() habe ich jetzt nur pseudohaft eingefügt. Steht quasi in Wirklichkeit mehr da. Die Datei wird zum Client auch erfolgreich übertragen, liegt damit auf dem Client auf HDD bereit.

Nun aber das Problem: Ich schließe sowohl die Streams, als auch den Socket. Trotzdem erhalte ich dannach, wenn ich die entsprechende Datei öffnen möchte in etwa meist folgenden Aufruffehler: "Zugriff verweigert, Datei wird an einer anderen Stelle aktuell genutzt." Die Datei ist somit in irgendeiner Form noch offen. Bei Textdateien tritt der Fehler z.B. nicht auf, vermutlich weil intern eine Kopie angelegt und geöffnet wird. Office-Dateien hingegen melden den Fehler, PDF ebenso. Ich ging davon aus, dass nachdem ich mit close() alle Stream und den Socket getrennt habe, Zugriff besteht, dem ist nicht so. Schließe ich das Programm, dann kann ohne Probleme die Datei auf der Festplatte öffnen. Woran kann es liegen???

Danke im voraus.
Grüße, Marcus
 
G

Gelöschtes Mitglied 5909

Gast
wenn ich mich nicht täusch is das ein windoof problem, da windoof die sockets irgendwann mal automatisch schließt, nicht aber unbedingt wenn Socket#close aufgerufen wird.
 

TypusMensch

Mitglied
raiL hat gesagt.:
wenn ich mich nicht täusch is das ein windoof problem, da windoof die sockets irgendwann mal automatisch schließt, nicht aber unbedingt wenn Socket#close aufgerufen wird.

Hmmm, "irgendwann" schließe ich mal aus. Wie bereits erwähnt, sobald ich das Programm schließe lässt sich die Datei unverzüglich danach öffnen. Außerdem verliert die Methode dann ja jeglichen Sinn. Vielleicht kann man das ja in irgendeiner Form "erzwingen".

Hint: Mir ist daher auch der Sinn nach file.canExecute() nicht ganz klar, da wie mir scheint, sich die Datei ja nicht wirklich fehlerfrei aufrufen lässt, dennoch hier ein true zurückgegeben wird....
 
T

tuxedo

Gast
Bist du sicher dass du auch den Stream ins Dateisystem geschlossen hast? Der Netzwerkstream hat ja nur indirekt was mit dem Filestream zu tun.

- Alex
 

musiKk

Top Contributor
TypusMensch hat gesagt.:
Hint: Mir ist daher auch der Sinn nach file.canExecute() nicht ganz klar, da wie mir scheint, sich die Datei ja nicht wirklich fehlerfrei aufrufen lässt, dennoch hier ein true zurückgegeben wird....

Wieso hint?

canExecute() prueft nur die Rechte. In z. B. UNIX-Dateisystemen hat jede Datei diverse Flags. Wenn das execute-Flag nicht gesetzt ist, kann die Datei nicht ausgefuehrt werden.
 

TypusMensch

Mitglied
Ja, aber ich dachte, dass dieses Flag ggf. gesetzt wird (evl. auch unter Windows), wenn sich die Datei bereits in Ausführung befindet...
 

musiKk

Top Contributor
Nein, das Flag sitzt nicht im Betriebssystem, sondern im Dateisystem. Windows kann damit gar nicht umgehen, da kann man ja eh alles ausfuehren. Hauptsache .exe steht hinten.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Dann07 Audio streamen bricht immer ab nach kurzer Zeit Netzwerkprogrammierung 6
G seite nach posten eines html-forms laden Netzwerkprogrammierung 0
N websocket - keine Daten mehr nach ca 80 Sekunden Netzwerkprogrammierung 0
C Gerenderte Website nach der ausführung von JavaScript als HTML Code aus lesen Netzwerkprogrammierung 4
F Wiederverbinden nach socket Abbruch Netzwerkprogrammierung 1
T Socket sendet erst nach socket.close() Netzwerkprogrammierung 2
B Nach Verbindung gleich ObjectStream empfangen Netzwerkprogrammierung 1
L Verzeichnisse mit Inhalt nach SMB-Share kopieren Netzwerkprogrammierung 16
N HTTP Apache 4.2.1 HttpClient 302 nach Login und auf den weiteren Seiten. Netzwerkprogrammierung 5
K Socket Chat-GUI eigenes Event nach Empfangen Netzwerkprogrammierung 2
G Cookie Verwaltungs Problem nach Login auf InetSeite (Wo utma-Cookie?) Netzwerkprogrammierung 18
P Datenpakete nach Australien Netzwerkprogrammierung 7
C Socket Identifikation des clients nach der accept() Methode Netzwerkprogrammierung 2
J Nach Dateiversand werden keine Nachrichten mehr übertragen Netzwerkprogrammierung 11
J Nachricht kommt erst nach beendigung der Anwendung an Netzwerkprogrammierung 4
D Socket Automatischer Reconnect nach einem Disconnect. Netzwerkprogrammierung 4
S Socket nach anderen clients im netzwerk suchen Netzwerkprogrammierung 3
B IP nach gewissen Kriterien überprüfen Netzwerkprogrammierung 5
V JNLP startet nicht !!?!! (je nach PC) Netzwerkprogrammierung 1
H Object Cast Problem nach Übertragung mit Log4j Netzwerkprogrammierung 5
DeviAn Über ein Linux Server ein Windows Server nach einer File fragen Netzwerkprogrammierung 6
Q Datein von Windows nach Mac senden Netzwerkprogrammierung 4
L RMI Programm beendet ohne Fehler sofort nach Start (Windows 2000) Netzwerkprogrammierung 7
T Nach Servern suchen Netzwerkprogrammierung 2
K Bad Request nach Form Login in Jakarta HttpClient Netzwerkprogrammierung 4
L nach Servern suchen Netzwerkprogrammierung 2
M ordner nach socket-übertragung defekt Netzwerkprogrammierung 5
B Im eingelesenen Text nach einem Wort suchen Netzwerkprogrammierung 46
M serialisierung funktioniert nur nach neuer instanzierung Netzwerkprogrammierung 3
W fehlerhafte Datei nach Dateitransfer per ServletOutputStream Netzwerkprogrammierung 2
A Client stürzt nach versand ab Netzwerkprogrammierung 13
M Verbindung nach Serverabsturz wieder aufbauen Netzwerkprogrammierung 9
S Unix Datei vom Server nach Windows übertragen Netzwerkprogrammierung 8
G Port belegt nach Server restart Netzwerkprogrammierung 5
G Socket wird nach Portscann geschlossen Netzwerkprogrammierung 2
N Verarbeitung nach Weiterleitung in Sockets Netzwerkprogrammierung 2
L Frage nach Socket Netzwerkprogrammierung 4
B Socket SCP - Dateitransfer mi KeyFile Netzwerkprogrammierung 6
M Socket, Ende Dateitransfer Netzwerkprogrammierung 4
S Dateitransfer - kein end of stream Netzwerkprogrammierung 5
B Paralleler Dateitransfer: Ein Client - Mehrere Sockets? Wie connecten? Netzwerkprogrammierung 16

Ähnliche Java Themen

Neue Themen


Oben