Java blockiert datei nach schreiben und gibt sie nicht frei

programsearch

Grünschnabel
Also ich hab einen kleinen Server der eine Datei an einen Client schickt. der client schreibt dann erfolgreich die gesendete datei. so weit so gut. doch möchte ich nun die datei öffnen während der client noch am laufen ist meldet windows das die datei von einer anderen Person bzw. einen anderen Programm verwendet wird.
Wenn ich dann den Client schließe funtkioniert alles wieder.

Hier mal der code.

Code:
DataInputStream is = new DataInputStream(clientSocket.getInputStream());
int a=0;
File nf = new File("test2.avi");
byte[] les = new byte[ 1024 ];

try{
   FileOutputStream fos = new FileOutputStream(nf);
   BufferedOutputStream bos = new BufferedOutputStream(fos);
   DataOutputStream dos = new DataOutputStream(bos);

   while ( a != -1 ) {
         a = is.read(les);
         dos.write(les, 0, a);
         dos.flush();
   }
   dos.close();

}catch ( IOException e ) {
   e.printStackTrace();
}

wie bekomm ich nun die datei wieder frei ohne das programm zu schließen
 
komisch, wenn dos, bos und fos zu sind, müsste die Datei eigentlich freigegeben werden, vielleicht aber auch erst nach einer Wartezeit.
 
für alle die es interresiert:
hab den fehler gefunden.

irgendwie wurde die while-schleife nicht beendet und lief endlos, sodass die befehle darunter nicht mehr aufgeruft wurden sind. hab das jetzt so gelöst.

Code:
DataInputStream is = new DataInputStream(clientSocket.getInputStream());
int a=1024;
File nf = new File("test2.avi");
byte[] les = new byte[ 1024 ];

try{
   FileOutputStream fos = new FileOutputStream(nf);
   BufferedOutputStream bos = new BufferedOutputStream(fos);
   DataOutputStream dos = new DataOutputStream(bos);

   while ( a == 1024 ) {
         a = is.read(les);
         dos.write(les, 0, a);
         dos.flush();
   }
   dos.close();
   bos.close();
   fos.close();

}catch ( IOException e ) {
   e.printStackTrace();
}
 
Zurück