# Probleme mit File renameTo bzw. File delete



## partito (17. Aug 2004)

hi leute,

ich bin grad dabei mittels jsp so ne art berichtswesen zu erstellen - funktionen dabei sind insert, select und update. mein update vorgang sieht folgender maßen aus: 1. datei "data.csv" einlesen und in array speichern, 2. in array änderungen vornehmen, 3. array in "dataStore.csv" schreiben, 4. data.csv löschen 5. dataStore.csv renameTo data.csv

das problem ist: es funktioniert beliebig oft - nur irgendwann hängt er sich irgendwo bei delete bzw. renameTo auf - keine ahnung warum!!!

schritt 4 und 5 passieren auf ner eigenen jsp - zur info:


```
<%-- Imports for the Page --%>
  <%@ page import="java.util.*, java.text.*, java.io.*"%> 

  <%

  String tempFile = "c:\\programme\\apachetomcat\\webapps\\bericht\\data.csv";
  String tempFile2 = "c:\\programme\\apachetomcat\\webapps\\bericht\\dataStore.csv";
  boolean deleted = false;
  boolean renamed = false;

  while(deleted == false)
  {
  File file = new File(tempFile);
  deleted = file.delete();
  }

  while(renamed == false)
  {
  File file2 = new File(tempFile2);
  File file3 = new File(tempFile);
  
  renamed = file2.renameTo(file3);
  }
```

die dateien sind weder offen oder von anderen programmen benützt - zumindest nicht aus user-sicht!

plz help!!!

_edit deathbyaclown: code tags !_


----------



## partito (18. Aug 2004)

hi leute,
also ich hab bei der 90. kontrolle entdeckt, dass ich auf ner vorigen JSP nen FileReader nicht geschlossen hab - bin mir aber nicht sicher, ob dies der fehler sein kann, da es ja x-mal auch ohne dem close funktioniert hat ... naja vielleicht kann ma trotzdem wer helfen - vielen Dank im voraus!


----------



## partito (18. Aug 2004)

geht wieder nicht ... tztz


----------



## partito (18. Aug 2004)

Problem gelöst! Zwar etwas schlampig, aber es funktioniert nun tadellos. Das Problem lag zum einen am delete(), da die while-Schleife nicht genügt, sondern die Seite auch aktualisiert werden muss - zum anderen funktioniert das renameTo() nicht wirklich gut - für JSDK 1.4 ein Tipp --> FileChannels

also hier meine "quick and dirty"-Lösung ;-))

update_finish.jsp:


```
String file1 = "c:\\programme\\apachetomcat\\webapps\\bericht\\data.csv";
  File fileX = new File(file1);

  try 
  {
    while(fileX.exists())
    {
      %>
      <script type="text/javascript">
      <!--
       window.location.href="update_finish.jsp"
      //-->
      </script>
      <%
      fileX.delete();
    }
  } 
  catch(Exception e)
  {
    out.println("Ein unerwarteter Fehler ist aufgetreten!");
  }
```

update_finished:

```
<%
String strInFile = "c:\\programme\\apachetomcat\\webapps\\bereit\\dataStore.csv";
String strOutFile= "c:\\programme\\apachetomcat\\webapps\\bereit\\data.csv";

try
{
  BufferedReader oRead = new BufferedReader(new FileReader(strInFile));

  PrintWriter oWrite = new PrintWriter(new FileWriter(strOutFile));

  String strLine;

  while(null != (strLine = oRead.readLine()))
    oWrite.println(strLine);

  oRead.close();
  oWrite.close();
}
catch(FileNotFoundException exFileNotFound)
{
  System.out.println("Kann Datei nicht oeffnen: " + strInFile);
}
catch(IOException exIO)
{
  System.out.println("Ein-/Ausgabefehler");
}
```


----------

