Servlet - Datei kann nicht gelöscht werden

sindylee2

Mitglied
Hallo Zusammen, ich habe ein Servlet geschrieben, darin wollte ich "file.renometo(destinationfile)" benutzen,kann diese Klasse jedoch nicht immer funktionieren, dann versuche ich mit "read file" und "file.delete()" zu ersetzen, aber leider die Datei kann nicht gelöscht werden, was habe ich falsch gemacht?

Java:
                boolean okay = true;
                
                if(filenameFrom.equals(filenameTo) == false)
                {
                	okay = false;            
                	if(fileFrom.isFile() == true)
                	{
                		try
                		{
                			File parentDir = fileTo.getParentFile();
                			parentDir.mkdirs();
                		} catch(Exception all){}

                		okay = true;

                		try
                		{                			
                			FileInputStream fis = new FileInputStream(fileFrom);
                			FileOutputStream fos = new FileOutputStream(fileTo);
                			byte[] bytes = new byte[40960];
                			int len = 0;

                			while((len = fis.read(bytes)) >= 0)
                			{
                				fos.write(bytes, 0, len);
                			}
                			
                			fis.close();
                			fos.flush();
                			fos.close();

                		} catch(Exception all)
                		{
                			okay = false;
                		}   
                		//fileFrom.setWritable(true);  Dies kann nicht kombliert werden????
                		fileFrom.delete();  
                		okay = fileFrom.exists() == false;
                	}   
                	
                
                }


Hilfe;(
 
S

SlaterB

Gast
ist das nur speziell in einem Servlet so oder auch wenn du ein normales Java-Programm auf dem entsprechenden Rechner laufen läßt?
dass der Server nicht im Dateisystem eines Clients herumfuhrwerken kann ist klar, oder?

ist es reproduzierbar immer dieselbe Datei/ derselbe Vorgang?
kommt es zu Exceptions, zum catch in Zeile 32? wenn die Streams dann noch offen sind geht das Löschen vielleicht nicht,
üblicherweise gehören die close()-Aufrufe in einen finally-Block, damit sie auch bei Exceptions ausgeführt werden
 

sindylee2

Mitglied
also es passiert nur beim Servlet, wenn es lokal läuft, das funktioniert perfekt. Die Zeile 32 kann keine Exceptions fangen. Es scheint, das "fileFrom.delete()" wurde tatsächlich fehlerlos ausgeführt, aber danach existiert die Datei trotzdem immer noch!
 

sindylee2

Mitglied
fileFrom: Quelle
fileTo: Ziel
Sie liegen in verschiednen Ordner, Ich möchte die fileFrom zuerst zu den Ort kopieren, wo fileTo liegt, danach lösche ich fileFrom. Bis jetzt funktioniert der erste Schritt schon, aber der 2.Schritt kriege ich nicht hin.
 
M

maki

Gast
Auf meine Frage "Wo liegen sie denn? antwortest du im Ernst mit "fileFrom soll gelöscht werden"?

Hatte schon mit konkreten Pfaden als Antwort gerechnet ;)
 

freez

Top Contributor
Wird die Datei vielleicht automatisch wieder erstellt? Ist die Datei vielleicht blockiert?
 
Zuletzt bearbeitet:

freez

Top Contributor
Java:
okay = fileFrom.exists() == false;
Dieser Code überschreibt doch dein okay im Catch Block. Woher weist du, ob der Catch Block angesprungen wurde? Wichtig wäre auf alle Fälle ein all.printstackTrace() in deinem Catch Block. Sonst kannst du später nie sehen, warum etwas nicht funktioniert hatte. Gerade wenn du es in einem Servlet laufen hast und du unter Umständen erst Tage später einen Fehler in der Funktion deiner Anwendung feststellst, helfen die die Log Files deines Servers dann weiter.
 
Zuletzt bearbeitet:

sindylee2

Mitglied
Heute habe ich den Kode wieder mal ausgeführt und entdeckt, dass das Problem liegt gar nicht auf dem Servlet, sondern auf der Klientseite. Also die Datei wurde irgendwann blockiert. Sogar ich habe das ganze Programm schon beendet, die Datei blockiert sich immer noch, nur bis ich das Tomcat unterfahre dann kann die freigegeben werden. Aber ich weiß nicht warum, und wann, wo wurde die Datei blockiert. Habt ihr welche Ideen oder Methode, die Ursache zu finden?
 

sindylee2

Mitglied
Ich habe mit "finally" ausprobiert, leider funktioniert es immer noch nicht.....
Java:
  boolean okay = true;
                
                if(filenameFrom.equals(filenameTo) == false)
                {
                    okay = false;            
                    if(fileFrom.isFile() == true)
                    {
                        try
                        {
                            File parentDir = fileTo.getParentFile();
                            parentDir.mkdirs();
                        } catch(Exception all){}
 
                        okay = true;
 FileInputStream fis = null;
FileInputStream fos  = null;
                        try
                        {                           
                            fis = new FileInputStream(fileFrom);
                            fos = new FileOutputStream(fileTo);
                            byte[] bytes = new byte[40960];
                            int len = 0;
 
                            while((len = fis.read(bytes)) >= 0)
                            {
                                fos.write(bytes, 0, len);
                            }
                        } catch(Exception all)
                        {
                            okay = false;
                        }   
                        //fileFrom.setWritable(true);  Dies kann nicht kombliert werden????
finally{
try{
if(fis != null) fis.close();
if(fos != null) {
fos,flush();
fos.close();
}
}
catch(Exception e){
throw new Exception("Cannot close file: "+fileFrom.getAbsolutePath());
}
}
                        fileFrom.delete();  
                        //okay = fileFrom.exists() == false;
                    }   
                    
                
                }
      //if(okay == false) print error message into log file. //hier wird immer Fehlermeldung in Log-Datei eingeschrieben. und Die Datei wurde nicht gelöscht
 
Zuletzt bearbeitet:

FArt

Top Contributor
Fileschnittstellen sind keine gute Schnittstelle. Trotzdem musst du wohl mit einer arbeiten. Somit müssen natürlich alle Beteiligten sauber mit Streams umgehen und diese nach Gebrauch sicher schließen.

Du solltest auch sauber arbeiten: benutze Logging, damit du nicht raten musst, was in deinem Code passiert und benutze bei Problemen einen Debugger. Versuche das Problem im Kleinen nachzustellen. Exceptions sind Ausnahmen. Logge diese zumindest. Auch andere Rückgabewerte sind es wert, berücksichtigt zu werden (z.B. File (Java 2 Platform SE v1.4.2)).

Ich habe mir deinen Code nicht genau angesehen (auch weil er schlimm formatiert ist). Auf jedem Fall ist er sehr unstrukturiert. Obwohl er sehr einfach ist, sieht man ihm nicht sofort an, was er erledigen soll.

Und immer dran denken: wenn ein Verzeichnis nicht gelöscht werden kann, ist es in der Regel nicht leer. Sonst sind in der Regel die Streams nicht richtig geschlossen bzw. eine andere Applikation hält die Datei noch offen (Windows).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Bild-Datei von Servlet an Browser senden Netzwerkprogrammierung 8
Encera Servlet Mapping Netzwerkprogrammierung 5
N Test Servlet funktioniert nicht Netzwerkprogrammierung 11
D Response in Java Servlet erzeugen Netzwerkprogrammierung 0
C Servlet erstellen klappt nicht Netzwerkprogrammierung 3
S HTTP Servlet als Instanzen im Programm starten Netzwerkprogrammierung 3
H Reponse vom Servlet leer Netzwerkprogrammierung 16
H Servlet Umlaute Netzwerkprogrammierung 20
R Socket SSL-Connect in Servlet - keystore wird nicht gefunden Netzwerkprogrammierung 2
F Kann Klasse nicht zu Servlet casten Netzwerkprogrammierung 5
S send riesige "Query" to servlet Netzwerkprogrammierung 7
N Servlet Response fehlerhaft Netzwerkprogrammierung 14
E RMI - Servlet Netzwerkprogrammierung 4
D Apache Mina und GWT Servlet Netzwerkprogrammierung 4
B Pdf Stream von Servlet mit itext Netzwerkprogrammierung 12
M Servlet als Login Netzwerkprogrammierung 20
B HTTP PDF Servlet download vom Server zum Client Netzwerkprogrammierung 3
B HTML meets Servlet Netzwerkprogrammierung 6
J ObjectOutputStream legt Servlet lahm Netzwerkprogrammierung 7
H Objekt von JSP an Servlet übergeben Netzwerkprogrammierung 4
S Servlet InputStream leer?! Netzwerkprogrammierung 14
H kleines Servlet Problem Netzwerkprogrammierung 2
N Servlet-RMI Kommunikation Netzwerkprogrammierung 8
D Verbindung über ein Servlet zu einem Server Netzwerkprogrammierung 4
Paule Connection Applet Servlet ohne Socket bzw RMI Netzwerkprogrammierung 2
R Problem mit Servlet ansprechen Netzwerkprogrammierung 7
B Servlet URL aufruf Netzwerkprogrammierung 4
R Servlet Komunikations Problem Netzwerkprogrammierung 4
D Einfache Applet-Servlet-Kommunikation Netzwerkprogrammierung 5
A JSP->Servlet->Programm (Ausführung) -> Servlet -&gt Netzwerkprogrammierung 2
M Servlet - Applet Kommunikation Netzwerkprogrammierung 3
R Java Applikation als Client ,Servlet als Server: Problem? Netzwerkprogrammierung 3
Z dateidownload vom servlet aus Netzwerkprogrammierung 4
T Servlet-Programmierung & Templates Netzwerkprogrammierung 4
T Einfacher Servlet-Server Netzwerkprogrammierung 8
A RMI Servlet Client Netzwerkprogrammierung 6
S object via post auf servlet send und weiter bearbeiten Netzwerkprogrammierung 11
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
R applet servlet kommunikation Netzwerkprogrammierung 2
I Servlet ParameterChaos Netzwerkprogrammierung 2
C Applet <> Servlet Netzwerkprogrammierung 4
K RMI Kommunication zw. Servlet und EJB Netzwerkprogrammierung 7
A Bei FTP Übertragung wird Datei nicht komplett übertragen Netzwerkprogrammierung 2
J Datei Download vom Server Netzwerkprogrammierung 8
H Datei mit Anhang via http "hochladen" Netzwerkprogrammierung 16
E JCIFS - Smb - Datei kann nur von einem Benutzer bearbeitet werden Netzwerkprogrammierung 1
Aruetiise Socket Datei Endung Netzwerkprogrammierung 6
A FTP wie kann ich von java auf datei in fpt://192.168.178.1 lesen/schreiben? Netzwerkprogrammierung 3
K HTTP Formulare füllen und Datei downloaden Netzwerkprogrammierung 23
B JSch Filetransfer ohne KnownHosts Datei? Netzwerkprogrammierung 0
A Datei erzeugen und auf der Weboberfläche downloaden (Tomcat) Netzwerkprogrammierung 4
Sogomn HTTP Datei herunterladen Netzwerkprogrammierung 13
C Inhalt einer .JPG Datei in einen OutputStream schreiben? Netzwerkprogrammierung 10
F FTP FTPClient Datei lässt sich nicht öffnen Netzwerkprogrammierung 4
F HTTP Serialisierte Objekte aus Datei von Server Netzwerkprogrammierung 1
T Anwendungseinstellungen ohne Datei übertragen? Netzwerkprogrammierung 8
F FTP Einzelne Datei von FTP-Server überprüfen Netzwerkprogrammierung 0
L FTP Lesen einer Datei vom Server - Aufgehangen Netzwerkprogrammierung 0
M jsf-seite beim hinzufügen einer csv-datei in einen ordner aktualiseren Netzwerkprogrammierung 0
D Einfache Verbindung zu Linux Server und Datei auslesen Netzwerkprogrammierung 13
S Datei(XML) per RMI an Server schicken Netzwerkprogrammierung 0
V Datei Download Fenster Netzwerkprogrammierung 9
S Datei schreiben über Applet Netzwerkprogrammierung 8
C Socket Datei Übertragung Netzwerkprogrammierung 5
D Datei hochladen zu PHP Server Netzwerkprogrammierung 8
C Datei über Socket schreiben und Ereignis lesen Netzwerkprogrammierung 9
K HTTP Eigener Http Response für Datei-Download Netzwerkprogrammierung 4
D Socket Datei nur stückweise über Socket verschicken Netzwerkprogrammierung 6
T Datei downloaden ohne den Dateinamen zu kennen Netzwerkprogrammierung 2
H Datei in DropBox schreiben Netzwerkprogrammierung 23
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
V Datei auf Server Schreiben Netzwerkprogrammierung 18
N Einen Server als ausführbare Datei exportieren Netzwerkprogrammierung 15
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
B FTP Datei auslesen ohne einloggen möglich? Netzwerkprogrammierung 19
C Datei auf server speichern Netzwerkprogrammierung 16
P FTP Nochmal wachsende Datei per FTP lesen Netzwerkprogrammierung 9
W Datei automatisiert kopieren! Netzwerkprogrammierung 5
P Wachsende Datei per FTP lesen Netzwerkprogrammierung 2
U Datei über das Netzwerk einlesen und speichern Netzwerkprogrammierung 8
G Txt datei von Website downloaden Netzwerkprogrammierung 8
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
I HTTP Datei Uploaden mit http und Sprache anpassen Netzwerkprogrammierung 7
1 Datei senden/empfangen funzt nicht... Netzwerkprogrammierung 5
S ActiveMQ, JMS und Datei übertragen Netzwerkprogrammierung 25
M Socket Datei über Socket versenden Netzwerkprogrammierung 5
U Web Datei downloaden und bei Änderungen wieder zurückspielen Netzwerkprogrammierung 5
M Class-Datei aus Eclipse mit Xampp Netzwerkprogrammierung 4
A HTTP Download einer Datei mit "Statistiken" Netzwerkprogrammierung 2
B Zugriff auf eine Text- und XML-Datei Netzwerkprogrammierung 4
Dit_ FTP, Datei Hochladen Netzwerkprogrammierung 4
Ollek Download einer Datei durch SFTP mit Java Netzwerkprogrammierung 12
J Datei übertragen ja String + datei übertragen nein Netzwerkprogrammierung 5
P Name der Download-Datei ermitteln Netzwerkprogrammierung 8
N Socket TCP Datei Transfer Netzwerkprogrammierung 2
L Java über php datei lesen? Netzwerkprogrammierung 18
P Socket Datei von Client zum Server übertragen --> Weiterleitung an Clients Netzwerkprogrammierung 16
Akrillo Datei per Netzwerk senden Netzwerkprogrammierung 10
P HTTP Problem beim Download von einer Datei Netzwerkprogrammierung 4
L Größe einer Datei auslesen die im Netz liegt Netzwerkprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben