Nerdrage on Java: File.renameTo() – Oder: Ja seid ihr eigentlich bescheuert?

Oracle Java Advertising @ Maker Faire © by Schill

Ich hatte heute ein eigentlich ganz einfaches Programmierproblem zu lösen, das sich mir auf den ersten Blick nichtmal als Problem erschloss.

Es handelt sich um Java 7, es handelt sich um ein ganz einfaches File-Object, es handelt sich verdammt nochmal einfach nur darum, eine Datei mehrmals zu verschieben.

Während ich (eigentlich in .NET beheimatet) schon leicht die Stirn runzelte, weil es keine Move-Methode, sondern nur eine renameTo-Methode gibt, wäre es mir im Leben nicht eingefallen, dass da irgendwas schief laufen könnte. Tut’s aber. Und zwar gewaltig!

Codebeispiel:

File a = new File(“a.txt”); // existente Datei

File b = new File(“b.txt”); // nicht existente Datei

a.renameTo(b); // Ergebnis: “a.txt” wurde in “b.txt” umbenannt

File c = new File(“c.txt”); // ebenfalls nicht existent

a.renameTo(c); //keine Fehlermeldung, kein umbenennen

Kann hier irgendjemand einen Fehler erkennen?  Eben, ich auch nicht. Ich habe ein File-Objekt, dessen Speicherort ich mehrmals verschiebe. Auf dem Dateisystem (NTFS) wird dabei lediglich angemerkt, dass die Datei jetzt anders heiß. Da wird nix kopiert, nix an den Rechten geändert, gar nix.

Warum jetzt zickt Java rum?

Weil irgend ein Sprachentwickler auf die Idee kam, dass ein File-Object munter weiter als File-Object arbeitet, nur halt ohne File dahinter. Im Klartext: Obwohl ich das Umbenennen über eine Methode des Objects durchführe, merkt es sich nicht, dass es verschoben wurde.

Ist das nicht immer so?

Hab ich mich auch gefragt. Also mal flott mit C# ausprobiert. Was ist? Klappt. FileInfo-Objekt erstellt, a.Move(“b.txt”), a.Move(“c.txt”), alles funktioniert, nirgendwo ein Problem.

Ich bin auch nicht der einzige Depp bei dem Java so doof ist, das ist eine Designentscheidung, die für mich gar keinen, aber auch wirklich gar keinen praktischen Nutzen hat.

Man könnte ja sagen: Ja, gut, das ist, weil man nicht alle File-Objekte auf eine Datei benachrichtigen will dass sie jetzt woanders hin hucken müssen. Könnte ja sein. Aber andererseits: Nach dem renameTo sind erstmal alle File-Objekte tot. So richtig, richtig tot!

In diesem Sinne: “Write once, run everywhere, works nowhere.”

27 Comments

Filed under Science

27 Responses to Nerdrage on Java: File.renameTo() – Oder: Ja seid ihr eigentlich bescheuert?

  1. Pingback: https://bkn.go.id/login

  2. Pingback: www.cpns2016.com

  3. Pingback: zd porn

  4. Pingback: http://www.rugscheap.org/

  5. Pingback: Corporate Event Management company

  6. Pingback: home page

  7. Pingback: wedding planners

  8. Pingback: Boliden

  9. Pingback: slots

  10. Pingback: scr888 download

  11. Pingback: must watch

  12. Pingback: Aws Alkhazraji coehuman

  13. Pingback: satta matka

  14. Pingback: DMPK Contract Research

  15. Pingback: qanoooon

  16. Pingback: GVK bioscinces pvt ltd

  17. Pingback: warehouse for sale doral

  18. Pingback: wedding management company in hyderabad

  19. Pingback: http://guaranteedppc.com

  20. Pingback: tips for adwords advertiers

  21. Pingback: Free UK Chat Rooms

  22. Pingback: http://zy.zwbk.org/index.php/Guaranteed_income_ppc

  23. Pingback: traditional event management companies in hyderabad

  24. Pingback: 먹튀신고

  25. Pingback: Search Engine Marketing Company

  26. Pingback:

  27. Pingback: Fort Lauderdale movers

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">