Datei umbennen

  • Antworten:4
Mac Systems
  • Forum-Beiträge: 1.727

03.09.2009, 14:37:35 via Website

Momentan versuche Ich Fehlerfälle in meiner APP erst gar nicht entstehen zu lassen.
Sporadisch wird eine Datei aus dem Netz geladen die ein Update darstellt, noch kann es selbst nach Prüfung der Verbindung immer noch vorkommen das eine IOException fliegt (User fährt sich z.b im Zug). Daher wollte
Ich diese Datei erstmal Temporär ablegen, bei Erfolg diese dann in die Original Datei Umbenennen.

Mein Ansatz wäre jetzt grob dieser:


1public static boolean renameFile(Context _context) throws SecurityException
2 {
3 return _context.getFileStreamPath("test").renameTo(new File("echterfilname"));
4 }


Oder kennt jemand einen besseren Weg dafür ?

PS: Ja, ich müsste vorher ebenfalls die Original Datei mittels delete löschen.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

03.09.2009, 17:33:08 via Website

Dat is wohl so die korrekte Implementierung ...

wenn das in Deinem Code so passt ... seh ich da kein Problem.

lg
Voss

lg Voss

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

05.09.2009, 14:00:56 via Website

OK, dann werde Ich das erstmal so übernehmen. Bin mit dem Android Dateihandling eher auf Kriegfuss, aus meiner Sicht ist das nicht sonderlich gut gelöst.

— geändert am 05.09.2009, 14:01:10

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Konrad Pietzka
  • Forum-Beiträge: 12

06.09.2009, 23:14:24 via Website

Möglicherweise wäre folgende ;Methode auch ein Lösung für Dich:

public boolean renameFile(String file, String toFile) {

File toBeRenamed = new File(file);

// Prüfen,ob File oder Verzeichnis schon existiert

if (!toBeRenamed.exists() || toBeRenamed.isDirectory()) {

System.out.println("File does not exist: " + file);
return false;
}

File newFile = new File(toFile);

// Wenn nicht umbenennen

if (toBeRenamed.renameTo(newFile)) {
return true;
} else {
return false;
}

}

Den Original File brauchts Du nicht zu löschen, der ist weg. Ein Problem kann entstehen, wenn der File bei der Umbenunnung von einen anderen Prozess im Zugriff ist. Das könntest Du aber auch noch abfragen.

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

07.09.2009, 13:24:55 via Website

if (toBeRenamed.renameTo(newFile)) {
return true;
} else {
return false;
}

ist das gleiche wie, nur deutlich lesbarer:

return toBeRenamed.(rename(newFile));

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten